wiki:changelog

2646 by alx on 2025-10-24 17:18:05
В setRTPparams() не посылается второй раз VOPENA
если поток RTP уже активирован и payload type не изменился.
Closes #645.
2645 by alx on 2025-10-21 17:52:22
В pinger вместо ares_gethostbyname() используем ares_getaddrinfo().
Упростили резолвинг - теперь не ветвимся в зависимости от того, введен ли
адрес IP или имя хоста, и не ветвимся в зависимости от протокола, адрес
которого получен их имени хоста.
2641 by alx on 2025-09-26 11:51:34
Удалена поддержка resiprocate ниже версии 1.12.
2640 by alx on 2025-09-25 17:33:43
Версия resiprocate при ручной сборке пока возвращена в 1.12.
2639 by alx on 2025-09-25 17:03:59
Сделана поддержка сборки sip_ua с resiprocate-1.13.
2616 by alx on 2025-08-14 11:42:04
Исправлена ошибка анализа атрибутов sedonly, recvonly,
inactive, sendrecv принятых предложений SDP.
При переборе медиапотоков принятого сообщения SDP значение
режима не сбрасывалось в дефолтное перед началом анализа
очередного медиапотока. В результате в некоторых случаях
режим медиапотока мог оказаться неверным. Например если
в первом медиа встретился атрибут a=inactive, но затем этот
поток был по каким-то причинам отброшен, а в следующем медиа
атрибутов sendrecv/sendonly/recvonly/inactive не было, и этот
медиапоток был выбран, то мы ошибочно отвечали a=inactive.
Кроме этого, не учитывались атрибуты sendrecv/sendonly/
recvonly/inactive на уровне сессии.
2614 by alx on 2025-08-06 16:53:06
Виртуальным каналам (например ДВО и голосовым анонсам)
разрешено использовать SRTP.
2613 by alx on 2025-08-06 16:51:30
Устранена ошибка, которая могла возникать при
пересоздании виртуального (IP-only) канала.
Виртуальным каналам присваиваются номера таймслотов
больше 1000, а MSP требует чтобы при создании IP-only
канала указывался специальный номер таймслота 0xffff.
2611 by alx on 2025-08-06 14:05:23
Исправлена ошибка: при вызове SIP пользователя через
транспорт TLS с указанием в URI номера порта контакт
не находился на сервере регистрации, и вызывающий получал
ответ "480 temporary unavailable" как будто вызываемый
не зарегистрирован.
2607 by alx on 2025-08-04 18:12:29
Если в предложении SDP присутствует медиапоток с
профилем RTP/AVP и криптоключами, он трактуется
как предложение с опциональным шифрованием (то есть
как RTP/SAVP если у нас SRTP разрешено и как RTP/AVP
если разрешено только RTP).
2521 by alx on 2025-05-22 14:22:05
В битовой маске FEATURES занят бит для инцикации
наличия коммутатора VSC7511 (есть в плате VE-02).
2520 by alx on 2025-05-22 14:13:56
Канальные окончания FXO, PRI и SS7 передают DisplayName
в формате quoted-string (остальные и так передавали в
формате quoted-string).
2519 by alx on 2025-05-22 14:09:31
При извлечении Caller-ID из сообщения SIP
если DisplayName в форме quoted-string, удаляется
символ '\' в ESC-последовательностях.
2513 by alx on 2025-05-15 20:19:32
Исправлена ошибка валидации ответа SDP

В r2133 была внесена ошибка, приводившая к тому,
что если входящее сообщение INVITE содержало предложение SDP,
то при последующем получении сообщения ACK, не содержащего SDP,
выполнялась валидация сообщения SDP из принятого INVITE как
если бы это был ответ. То есть при этой валидации предложение
и ответ SDP оказывались перепутаны. Это могло приводить к
формированию неверных медиапарамотров.
Closes #457. See #409.

2512 by alx on 2025-05-14 16:20:11
Канальному окончанию SL добавлен "костыль"
для предотвращения "залипания" канального окончания
в состоянии Blocked в случае не прихода сообщения
"Tone completed" из MSP после окончания передачи
сигнала "отбой".

Перед посылкой сигнала "Отбой" кнальное окончание пересоздает
канал в MSP (есть неподтвержденные данные, что это само
по себе помогает устранить проблему), и запускается таймер
на 5 секунд. Если за 5 секунд сообщение "Tone completed"
не приходит, процедура отбоя выполняется повторно (включая
пересоздание канала в MSP и запуск таймера).

Практический эксперимент показал, что даже без пересоздания
канала повторная посылка сигнала "отбой" заказчивается получением
"Tone completed".

Closes #455.

2476 by alx on 2025-02-18 20:17:31
Исправлена ошибка: канальное окончание R1.5 передавало
в соединительную линию неверный сигнал ("занятие"), если
во время передачи кодограммы АОН был получен "отбой" и
состояние окончания изменилось.

Теперь передаваемая комбинация СУВ запоминается канальным окончанием
и перед разморозкой СУВ устанавливается последняя переданная комбинация.
Closes #449.

2473 by alx on 2025-02-11 18:17:00
При применении параметров RTP добавлена проверка на адрес 0.0.0.0

При получении такого адреса удаленной стороны действуем как при
наличии атрибута inactive. Closes #448.

2468 by alx on 2025-01-15 11:43:47
Merged from VE-02: ошибки в статических конференциях.
2459 by alx on 2024-09-13 14:05:36
Канальному окончанию FXO добавлен флаг интерсии СУВ.
При установке этого флага СУВ работает инверсно.
See #441.
2451 by alx on 2024-08-13 21:24:49
При изменении варианта протокола SSP перевычисляется DPC
всех привязанных к нему окончаний SS7, так как если они
заданы в формате "a-b-c", их интерпретация зависит от
варианта протокола (ANSI/ITU).
2450 by alx on 2024-08-13 21:11:19
Исправлена ошибка: после пересоздания SSP не всегда инициировалась
передача сигнальными линками SS7lnk.
2449 by alx on 2024-08-13 21:08:18
Добавлен вывод в лог сообщения об изменении параметра SSP SS7lnk.
2448 by alx on 2024-08-13 21:06:42
Исправлена ошибка: при изменении верианта протокола SSP
параметры APC линков, заданные в формате "a-b-c", оказывались
интерпретированы в соответствии с неверным вариантом (FNSI вместо ITU).
Теперь APC в SS7lnk хранится в виде строки, а в число переводится
непосредственно перед добавлением линка в SSP.
2447 by alx on 2024-08-13 18:43:37
Исправлена ошибка: деструктор SIPChannel вызывал виртуальные методы.
2446 by alx on 2024-08-13 17:51:25
Приоритет вывода libss7 понижен до DEBUG.
2445 by alx on 2024-08-13 16:22:26
Классу SIPChannel добавлен метод unregister().
Канальное окончание SSP выполняет разрегистрацию при отключении.
2444 by alx on 2024-08-13 11:48:28
Тестовый вызов не снимает блокировку окончания SS7.
2443 by alx on 2024-08-12 20:05:09
Флаг flagAccept3k1Audio перенесен из класса SS7 в SSP.
2442 by alx on 2024-08-12 19:49:04
Каналов в массиве channels теперь может быть больше чем таймслотов.
Теперь есть два макроса - TIMESLOTS_NUMBER (по-прежнему 256) и
CHANNELS_NUMBER (260, размер массива channels). Позиции 256...259
теперь занимают SSP0...SSP3. SSP больше не регистрируются как
виртуальные каналы.
Метод sendUpdate() сделан виртуальным.
2441 by alx on 2024-08-12 14:50:40
Исправлена ошибка: при проверке канальным окончанием SS7
флага SipFlagOnlySecure использовались собственные флаги SS7,
а должны использоваться флаги соответствующего SSP.
2440 by alx on 2024-08-12 14:48:06
В веб-интерфейсе отображается caller-ID, и только если его нет,
отображается URI из поля From. Closes #438.
2439 by alx on 2024-08-12 14:17:07
Класс SSP сделан потомком класса SIPChannel.
Соответственно, у него появилось множество настроек SIP/RTP.
Объекты класса SSP регистрируются как виртуальные каналы.
Объекты класса SS7 делегируют настройки сип своему SSP.
Closes #436.
2438 by alx on 2024-08-12 13:30:04
Если на момент вызова ua_unregister() ранее инициированная
транзакция REGISTER еще не завершена, возникала ошибка
(lineXosip возвращала OSIP_WRONG_STATE), и функция фактически
ничего не делала. Теперь при невозможности отправить запрос
по любой причине регистрация просто удаляется. Это временное
решение - см. #439.
2437 by alx on 2024-08-11 17:07:54
Функции ua_dial_out() передается caller_id если он есть
или пустая строка если caller ID неизвестен.
Во всех канальных окончаниях собственное оторажаемое имя
больше не используется при формировании caller ID.
Closes #437.
2436 by alx on 2024-08-11 13:34:54
Методы getRtpTimeout() и getConnectionLimit()
объявлены protected.
2435 by alx on 2024-08-11 13:24:30
Классу SIPChannel добавлен виртуальный метод getCidMutationRegex().
Доступ к cid_mutation_regexp выполняется через getCidMutationRegex().
2434 by alx on 2024-08-11 12:46:58
Классу SIPChannel добавлен метод getRtpTimeout().
Доступ к rtp_timeout теперь выполняется через getRtpTimeout().
2433 by alx on 2024-08-11 12:39:54
Классу SIPChannel добавлен виртуальный метод getConnectionLimit().
Доступ к conn_limit теперь выполняется через getConnectionLimit().
2432 by alx on 2024-08-11 12:29:08
Методы getAuthname(), getPassword() и getRealm()
сделаны виртуальными. Доступ к authname и realm
выполняется черех getAuthname() и getRealm().
2431 by alx on 2024-08-11 12:08:59
Методы getRegistrar(), getExpires(), getSessionExpires()
сделаны виртуальными.
2430 by alx on 2024-08-09 20:10:45
У функции ua_dial_out() убрали аргумент proxy.
Прокси она теперь получает непосредственно из объекта SIPChannel.
2429 by alx on 2024-08-09 19:45:01
У функции ua_dial_out() убрали аргумент codecs.
Набор кодеков она получает непосредственно из
объекта SIPChannel.
2428 by alx on 2024-08-09 19:36:40
Несколько сотавшихся обращений к codecsString заменены на getCodecs().
2427 by alx on 2024-08-09 19:25:08
Классу SIPChannel добавлен виртуальный метод getCodecs().
Доступ к настройке кодеков выполняется через getCodecs().
2426 by alx on 2024-08-09 19:22:28
Сигнальное окончание PRI копирует настройки транспорта,
прокси и кодеков в разговорные окончания PRI.
2425 by alx on 2024-08-09 18:48:06
Функции ua_dial_out() больше не передается аргумент transport.
2424 by alx on 2024-08-09 18:28:00
Метод getTransport() сделан виртуальным.
Доступ к конфигурационному параметру "транспорт"
выполняется только через getTransport().
2423 by alx on 2024-08-09 18:04:20
В ua_dial_out() вместо номера таймслота передается указатель на SIPChannel.
Параметр from теперь можно передавать пустым - это означает, что caller-ID
отсутствует, вызывающий неизвестен, и заголовки PAI/RPID не добавляются.
See #437.
2422 by alx on 2024-08-09 15:35:50
Все канальные окончания при отправке INVITE
для единообразия используют getDomainForOutgoing()
и, таким образом, поддерживают параметр to_domain
(хоть и не всем он нужен, например FXO, DS и т.п.).
2421 by alx on 2024-08-09 15:02:33
makeFrom() использует getURI() вместо прямого использования uri.
2420 by alx on 2024-08-09 14:50:43

В класс SIPChannel добавлен вспомогательный метод getDomainForOutgoing(),
который заменяем множество раз встречающуюся конструкцию

getToDomain().empty() ? gtHostname() : getToDomain()

2419 by alx on 2024-08-09 14:35:09
Метод getToDomain() сделан виртуальным.
Доступ к to_domain выполняется только через getToDomain().
2418 by alx on 2024-08-09 14:16:23
Метод getProxy() сделан виртуальным.
Доступ к proxy везде выполняется через getProxy().
2417 by alx on 2024-08-09 13:55:00
Методы getUsername() и getHostname() сделаны виртуальными.
Доступ к username и hostname выполняется через методы
getUsername() и getHostname().
2416 by alx on 2024-08-09 13:07:14
Метод getURI() сделан виртуальным.
2415 by alx on 2024-08-09 12:49:20
Метод pcmCode() сделан виртуальным.
line_coding используется для конфигурции,
а используется в работе pcmCode().
2414 by alx on 2024-08-09 11:55:34
Классу SIPChannel добавлен флаг, запрещающий регистрацию.
2413 by alx on 2024-08-09 10:41:57
Исправлена ошибка при выводе сообщения в лог.
2412 by alx on 2024-08-07 10:14:01
После изменения параметров JBOPT отправляется VOPENA.
Без этого новые настройки почему-то не применялись.
Closes #435.
2411 by alx on 2024-08-04 16:59:19
В SS7 при отправке IAM поле Nature of Address Indicator
вызываемого абонента устанавливается в значение 2 (Unknown).
2410 by alx on 2024-08-04 16:38:28
В SS7 при формировании индикатора Calling-Party-Category
в сообщении IAM кроме числовых значений параметра URI "cpc"
принимаются также строковые значнеия "operator", "ordinary",
"test", "payphone" и т.п.
2409 by alx on 2024-08-04 16:15:35
В событии call_event_t передается набор тэгов из Accept-Language.
2408 by alx on 2024-08-03 15:27:04
В SS7 при получении IAM с несуществующим CIC передается REL.
При ошибке активации разговорного канала также передается REL.
2407 by alx on 2024-08-03 14:48:15
В SS7 find_cic() при поиске канала учитывает номер SSP.
2405 by alx on 2024-08-03 11:42:50
В SS7 реализована перезача адреса и подадреса подключенной линии
из сообщений ANM и CON в сообщение "200 OK" и обратно.
2403 by alx on 2024-08-02 16:21:16
В SS7 реализована передача подадресов вызываемого
и вызывающего в параметре ATP сообщения IAM при их наличии
в параметрах URL сообщения INVITE. При получении IAM
анализируется параметр ATP, и если в нем есть подадреса
вызывающего и/или вызываемого абонентов, они передаются
в параметрах URL сообщения INVITE.
2402 by alx on 2024-08-02 15:48:57
При старте параметр net.unix.max_dgram_qlen устанавливаем в 2048.
2399 by alx on 2024-07-29 21:57:04
Полупостоянным конференциям добавлены новые конфигурационные параметры:

  • регулярное выражение вызова с заменой (автовызов в конференцию);
  • регулярное выражение участников, при уходе последнего из которых конференция завершается.

Closes #408.

2398 by alx on 2024-07-28 13:06:40
Оптимизация в канальных окончаниях SIP:
вместо того чтобы каждый раз при неоходимости
вычислять имя пользователя и хоста из URI,
теперь это делается при получении конфигурации
и сохраняется в объекте SIPChannel, а затем
используется при необходисомти без лишних
вычислений и копирований (hostname и раньше
выделялся из URI, но использовался не всегда).
ua_get_host_from_uri() больше не используется.
2397 by alx on 2024-07-27 19:43:49
Окончание PRI при получении CONNECT обновляет идентификацию
вызываемого абонента (имя, адрес, подадрес). Эта идентификация
передается в ответе "200 OK". Closes #433.
2396 by alx on 2024-07-27 16:13:24
Окончание PRI обновляет идентификацию вызываемого
абонента (имя, адрес, подадрес) при получении ответа
"200 OK" со стороны SIP. See #433.
2395 by alx on 2024-07-27 16:10:22
При получении ответа "200 OK" обновляется имя вызываемого
в дескрипторе соединения (если оно имеется в сообщении SIP).
2394 by alx on 2024-07-27 12:56:35
Канальное окончание PRI передает subaddress вызывающего из TDM в SIP.
See #433.
2393 by alx on 2024-07-26 20:26:31
Кодирование параметров URL "isub" и "isub-encoding"
вынесено в отдельную функцию.
В сообщении SETUP теперь передается subaddress вызывающего
(при его наличии в сообщении INVITE).
2392 by alx on 2024-07-26 20:18:19
Убран неиспользуемый аргумент cpc конструктора call_event_t().
2391 by alx on 2024-07-26 20:06:03
В классе call_event_t category() теперь является методом,
возвращающим значение параметра "cpc" вызывающего абонента
или пустую строку, если такого параметра нет.
2390 by alx on 2024-07-26 18:55:40
Событиям call_event_t, ringing_event_t, answer_event_t, subscribe_event_t
добавлены хэши параметров URL удаленной стороны (отправителя соответствующих
сообщений). Функции getRemotePartyInfo() теперь передается четвертый параметр,
в который она помещает параметры URL из соответствующего поля сообщения.
2389 by alx on 2024-07-25 21:19:25
В классе cjnnel_event_t объявлен тип StringMap.
Теперь при использовании хэша "string-string" указывается StringMap.
2388 by alx on 2024-07-25 15:17:19
Функция ua_add_to_userlist() перенесена в repro.cpp
и переименована в repro_add_to_userlist(). Функции
repro_add_user(), rerro_update_user() и repro_remove_user()
сделаны статическими.
2386 by alx on 2024-07-25 13:36:39
В окончании PRI реализована передача подадреса вызываемого
абонентс в сообщениях INVITE/SETUP. Теперь подадрес вызываемого
прозрачно передается через шлюз. See #433.
2385 by alx on 2024-07-24 17:11:32
Исправлена ошибка: при получении ответа "183 Session Progress"
канальное окончание PRI передавало сообщение ALERTING вместо PROGRESS.
Closes #434.
2383 by alx on 2024-07-22 16:27:26
Канальному окончанию PRI добавлен конфигурационный
параметр "ton-npi", устанаввливающий сразу
Type-Of-Number и Numbering Plan Indication.
2382 by alx on 2024-07-19 12:59:34
Канальному окончанию PRI добавлены конфигурационные параметры
исключений блокировок B-каналов для входящих и исходящих вызовов
по номеру вызывающего и вызываемого абонентов. Closes #432.
2381 by alx on 2024-07-18 19:06:33
Убрано забытое ранее тестовое присваивание
(это был "синтетический" тест для проверки).
2380 by alx on 2024-07-08 17:46:16
Канальному окончанию PRI добавлен конфигурационный флаг,
определяющий режим выбора B-канала (preferred/exclusive)
в сообщении SETUP.
Добавлен параметр blkInb, содержащий карту B-каналов,
блокированных для входящих вызовов.
При получении SETUP с указанием блокированного для входящих
вызовов B-канала в режиме preferred, выбирается другой
свободный незаблокированный B-канал.
Улучшена валидация сообщений, получаемых в ответ на SETUP.
See #432.
2364 by alx on 2024-06-18 13:06:31
Исправлена опечатка в тексте выводимого в лог сообщения.
2362 by alx on 2024-06-13 16:44:04
Чистка кода: убраны ненужные конструкции.
2361 by alx on 2024-06-13 16:39:49
Исключения блокировок SIP-пользователей используют PCREX.
2360 by alx on 2024-06-13 13:24:31
Изменены номера битов глобальных флагов, используемые PCREX.
2359 by alx on 2024-06-11 14:58:36
Регулярное выражение замены номера вызывающего (cid-replace)
использует PCREX во всех канальных окончаниях (где применимо).
2358 by alx on 2024-06-11 14:39:53
Канальное окончание PRI использует PCREX.
2357 by alx on 2024-06-11 14:29:49
Канальное окончание R1.5 использует PCREX.
2356 by alx on 2024-06-11 14:05:04
Канальное окончание SL использует PCREX.
2355 by alx on 2024-06-11 13:57:17
Канальное окончание SS7 использует PCREX.
2354 by alx on 2024-06-11 13:48:03
Канальное окончание R2DTMF использует PCREX.
2353 by alx on 2024-06-11 13:34:52
Канальное окончание PPS использует PCREX.
2352 by alx on 2024-06-11 13:30:14
Убран ненужный заголовочный файл.
2351 by alx on 2024-06-11 13:28:14
Канальное окончание 1IND использует PCREX.
2350 by alx on 2024-06-11 13:20:34
Канальное окончание R2 использует PCREX.
2349 by alx on 2024-06-11 13:02:25
Полупостоянные конференции используют PCREX.
2348 by alx on 2024-06-11 12:57:22
Канальное окончание FXS использует PCREX.
2347 by alx on 2024-06-11 11:48:43
Канальное окончание АДАСЭ использует PCREX.
2346 by alx on 2024-06-11 11:35:23
Убран ненужный заголовочный файл.
2345 by alx on 2024-06-11 11:23:10
Канальное окончание DEFLECTOR использует PCREX.
2344 by alx on 2024-06-11 11:14:38
Канальное окончание EM использует PCREX.
2343 by alx on 2024-06-10 19:41:56
Канальное окончание FXO использует PCREX для регулярного выражения.
2337 by alx on 2024-06-04 18:32:54
Избавились от необходимости подключать декларации vapi.h,
который определял кучу ненужных макросов и иногда этим
мешал другим декларациям. Теперь все необходимое объявляется
в comcerto.h и comcerto.cpp.
2336 by alx on 2024-05-31 17:25:48
Канальному окончанию ISDN PRI добавлен конфигурационный параметр
blkOut, содержащий битовую карту таймслотов, которые запрещено
занимать при исходящем вызове (в сторону TDM). Closes #424.
2220 by alx on 2024-02-02 19:12:48
Исправлена ошибка, которая могла приводить к падению
при отладочном выводе некоторых сообщений Q.931.
See #416.
2198 by alx on 2024-01-29 13:29:08
В канальном окончании R1.5 при получении ответа со стороны TDM
запрос АОН (500 Гц) не принимается в режиме "испульсный пакет".
2191 by alx on 2024-01-17 18:32:07
Исправшела ошибка в канальном окончании R1.5:
при отбое исходящего соединения со стороны TDM
не очищался флаг sip_answered, из-за чего следующий
вызов не передавал "200 OK" при получении "ответ"
(думал, что "200 OK" уже передавали ранее).
Теперь sip_answered очищается при приеме INVITE.
2187 by alx on 2024-01-16 16:53:03
В окончании R1.5 улучшены проверки условий вызова и отбоя
после приема пакета способом "импульсный пакет".
2186 by alx on 2024-01-16 16:28:55
Увеличен таймаут ожидания сигнала окончанием R1.5
после возврата в предответное состояние, если все
цифры номера уже были переданы.
2185 by alx on 2024-01-15 18:42:54
Из окончания R1.5 удален экспериментальный код,

отправлявший "180 Ringing" сразу после занятия канала.

2184 by alx on 2024-01-15 18:32:54
В R1.5 состояние DiscWait переименовано в Blocked

так как по смыслу это одно и то же состояние - ожидание
исходного состояния удаленной стороны,но технически они
применяются для разных направлений канала.

2183 by alx on 2024-01-15 18:14:00
В канальном окончании R1.5 улучшена валидация импульсного пакета:

невалидным считается пакет, в котором меньше 9 символов (на считая
символа "конец пакета") или содержится нецифровой символ (тоже не
считая символа "конец пакета").

2182 by alx on 2024-01-12 11:50:36
Исправлена ошибка в канальном окончании R1.5:
после возврата в предответное состояние передача оставшихся цифр номера
всегда выполнялась декадно-импульсным способом.
2181 by alx on 2024-01-12 10:52:42
Канальное окончание R1.5 при приеме вызова методом "импульсный пакет"
выполняет вызов или отбой после окончания передачи сигнала
успешного приема (B11) или ошибки приема (B6) импульсного пакета.
Раньше было одновременно.
2180 by alx on 2024-01-10 13:21:55
Канальному окончанию R1.5 в методе "импульсный челнок"
добавлена поддержка сигнала B11 (в ответ передается сигнал A14).
2179 by alx on 2024-01-10 13:18:41
Предыдущий коммит откачен, так как поддержка сигнала B10
и так уже была (в MSP этот сигнал имеет номер не 10, а 0).
2178 by alx on 2024-01-10 12:37:08
В канальном окончании R1.5 методу набора "импульсный челнок"
реализована поддержка управляющего сигнала B10
(передача номера декадно-импульсным способом начиная с последней переданной цифры).
2174 by alx on 2023-12-15 14:08:38
Канальному окончанию R1.5 добавлена функция передачи "180 Ringing"
после получения подтверждения занятия. Также обавлен конфигурационный
флаг для включения и выключения этой функции.
2173 by alx on 2023-12-15 13:12:10
В канальном окончании R1.5 реализован метод набора "импульсный пакет".
Closes #61.
2172 by alx on 2023-12-15 12:59:20
Канальное окончание R1.5 при передаче номера методом
"испульсный челнок" и получении ответа B4 передает ответ
с кодом 180 (было 183).
2171 by alx on 2023-12-14 19:11:19
Канальное окончание R1.5 поддерживает преобразование АОН.
2168 by alx on 2023-12-13 10:25:09
Убран ненужный код (по ошибке добавлял Route: в запрос REGISTER).
2165 by alx on 2023-12-12 11:26:36
Убрана неиспользуемая переменная
в коде декодирования принятой кодограммы АОН.
2164 by alx on 2023-12-12 11:14:58
Исправлена ошибка декодирования кодограммы АОН:
если последним принятым символом был символ "повтор",
вся кодограмма ошибочно считалась невалидной.
2149 by alx on 2023-09-29 11:12:01
Исправлена ошибка, допущенная в r2089:
при получении ACK соответствующее событие
не передавалось канальным окончаниям.
Closes #413.
2148 by alx on 2023-09-29 11:07:10
Исправлена ошибка, допущенная в r2145,
приводившая к размножению процессов ntpclient.
2145 by alx on 2023-09-26 11:35:31
Раз в секунду перезаписываются регистры ПЛИС
tdm_mode, tdm_select, tdm_band_select.
2144 by alx on 2023-09-25 15:01:49
Отключено добавление заголовка Identity: прокси-сервером.
2133 by alx on 2023-08-29 17:49:35
Исправлена ошибка, приводившая к отправке BYE с
Reason: SIP;cause=488;text="Incompatible media parameters"
сразу после ответа удаленного вызываемого абонента
в сценариях, когда ответ на предложение SDP был получен
в надежном предварительном ответе, а не в окончательном.
Closes #409.
2113 by alx on 2023-06-06 18:07:32
Канальное окончание DS при получении REFER вне диалога возвращает
ответ 302 c URI оператора в поле Contact. Closes #407.
2112 by alx on 2023-06-06 18:06:01
Функции ua_insubscription_response() добавлен аргумент contact.
Если он не пустой, то помещается в ответ вместо дефолтного.
Событию refer_event_t добавлено поле response_contact.
Оно передается в ua_insubscription_response() при отправке ответа.
See #407.
2110 by alx on 2023-05-26 10:22:29
Канальные окончания, работающие с соединительными линиями,
при занятости всех каналов и/или неисправности сигнального канала
дают вызывающему ответ 480 (ранее было 486).
2109 by alx on 2023-05-25 14:44:04
Исправлена ошибка: в канальных окончаниях SS7 и PRI
проверка совпадения вызываемого номера с регулярным выражением
выполнялась до проверки состояния сигнального соединения.
В результате при отсутствии сигнальных соединений вызываемый
получал ответ 404 и голосовое сообщение "номер не существует"
вместо ответа 486. Closes #405.
2102 by alx on 2023-05-12 14:54:30
Исправлена ошибка: при получении события eSettings со списком конференций
убивался DHCP клиент.
2098 by alx on 2023-04-26 11:16:13
Исправлена ошибка: при отправке NOTIFY никогда не указывалось isfocus.
Closes #403.
2097 by alx on 2023-04-26 11:04:44
Исправлена ошибка: при исходящем вызове участника в статическую конференцию
уведомление подписчикам рассылалось раньше, чем выполнялся собственно вызов,
из-за чего в уведомлении показывался "пустой" URI участника.
2096 by alx on 2023-04-26 10:36:41
При получении запроса SUBSCRIBE на конференцию инициатор запроса проверяется по белому списку.
See #403.
2095 by alx on 2023-04-26 10:35:46
В класс subscribe_event_t добавлено поле callerID.
В user_agent создана функция getRemotePartyInfo() для получения
отображаемого имени и номера удаленной стороны.
2094 by alx on 2023-04-25 17:57:02
Реализована функция автоматического вызова участника в конференцию
при подключении к конференции нового участника. See #403.
2093 by alx on 2023-04-25 17:47:44
В ua_refer_to() теперь допускается передавать нулевое значение did.
Раньше в таком случае в логе возникала пара сообщений об ошибке
из-за отсутствия диалога, в котором пытались отправить NOTIFY.
2092 by alx on 2023-04-25 16:26:44
Реализовано создание, конфигурирование и удаление статических конференций.
Реализован "белый список" участников конференций. See #403.
2090 by alx on 2023-04-13 16:04:50
Имя учасника конференции обновляется событиями eCallRinging и eCallAnswer только если имя в событии не пустое.
2089 by alx on 2023-04-13 16:01:17
События ringing_event_t и answer_event_t унифицированы.

Фактически это теперь один и тот же класс, отличается только значение type.
При получении eCallRinging участник конференции обновляет displayName.

2088 by alx on 2023-04-13 11:36:59
Уведомления об изменении состояния участников конференции отправляются синхронно.
2087 by alx on 2023-04-13 10:58:49
В уведомлениях конференций добавлен элемент <referred/>.
2086 by alx on 2023-04-12 18:38:57
Реализовано отображение состояния медиапотока участников конференций.
2085 by alx on 2023-04-12 17:55:26
Отслеживается состояние учасника конференции

Состояние меняется "dialing-out"/"alerting"/"connected".
Для уведомления об изменении состояния участника конференции добавлен
новый тип события eParticipantStatus.

2084 by alx on 2023-04-12 16:54:48
В уведомлениях о состоянии конференции добавлен элемент <joining-method/>.
2083 by alx on 2023-04-12 15:16:57
replaces_did заменин на refer_did.
2082 by alx on 2023-04-12 15:13:57
Переделан механизм передачи NOTIFY.
Релизована обработка сообщения REFER вне диалога INVITE.

Теперь ua_send_notify посылает NOTIFY как в рамках диалога INVITE,
так и в других диалогах (SUBSCRIBE, REFER). Организована учередь
нотификаций для каждого диалога. Следующий запрос посылается только
после получения ответа на предыдущий (по идее, ждать ответ требуется
только на первый запрос, остальные могут отправляться параллельно, но
сейчас реализовано ожидание ответа после каждого запроса).

2080 by alx on 2023-04-06 14:53:53
Устранены гонки при завершении конференции: когда отключался предпоследний участник,
фокус отбивал последнего участника и сразу посылал себе disconnect_event_t, по которому
конференция уничтожалась. Если сразу после этого создавалачь новая конференция, она могла
получить тот же confID и ts, что и только что уничтоженная. В результате она могла получить
еще не доставленное событие eParticipantLeave от последнего участника завершенной конференции,
в результате чего новая конференция тоже завершалась. Что еще хуже, MSP не мог уничтожить новую
конференцию, так как в ней уже был первый участник. В результате в MSP оставалась висеть
"фантомная" конференция с одним участником, то есть имела место утечка ресурсов.

Теперь при отключении предпоследнего участника конференции последнему передается отбой, и ожидается
от него eParticipantLeave. И только после получения eParticipantLeave от последнего участника
конференция завершается.

2079 by alx on 2023-04-05 18:12:21
Реализована подписка на события конференции в соответствии с RFC4579 и RFC4575.
Closes #107.
2078 by alx on 2023-04-05 16:09:43
Добавлена обработка сообщения SVR_ERROR_HANDLING с выводом в лог полезной информации.
Это сообщение может присылать MSP при обращении к несуществующему каналу.
2072 by alx on 2022-12-13 12:41:37
При создании SIP транспортов TLS в качестве домена использвется адрес интерфейса eth0.
Closes #398.
2067 by alx on 2022-12-11 12:45:40
Реализация функции ua_guess_ip полностью переделана:
теперь она использует get_iface_ip() и guess_ipv6().
Closes #399.
2065 by alx on 2022-11-23 19:54:29
Модуль fw_env заменен на fw-env - то же самое, но переписанное на C++.
Класс Fw_env поддерживает одновременно и резервированный (в двух блоках)
и нерезервированный (в одном блоке) варианты хранения переменных.
При старте sip_ua пытаетс однаружить переменные в одном из трех вариантов
конфигурации: в двух последних блоках ПЗУ (резервированный), только в
предпоследнем блоке ПЗУ, только в последнем блоке ПЗУ.
2064 by alx on 2022-11-18 17:48:20
При старте читается серийный номер платы из ПЗУ.
Если серийный номер прочитан, на отдается в переменной .250.0.
2061 by alx on 2022-07-11 12:10:03
Канальному окончанию PRI добален конфигурационный параметр "Префикс межгорода"
и конфигурационный флаг "Дополнительный гудок". Если флаг установлен, после
набора префикса межгорода в канал выдается дополнительный сигнал "Готовность".
Closes #275.
2057 by alx on 2022-06-07 18:00:07
Исправлена ошибка: маскарадинг INVITE не выполнялся, если вызов адресован в чужой домен.
Также если вызов был адресован в чужой домен, не работала административная блокировка
исходящих вызовов. Теперь проверки блокировки и маскарадинг контакта выполняются
раньше в цепочке обработчиков (непосредственно перед обработчиком AmIResponsible).
Closes #394.
2055 by alx on 2022-04-19 11:56:40
Устарнена ошибка: если список пользователей передается несколькими частями, и последняя часть
дублировалась, то из-за повторной обработки последней части начало списка пропадало.
Теперь при обработке последней части проверяется, была ли перед этим первая (чтобы убедиться,
что список пришел от начала и до конца), и если нет, то список не обновляется.

Также для предотвращения обработки дублирующихся запросов плата хранит в памяти ответы на запросы
каждой транзакции и время их отправки. Если принимается запрос, ответ с идентификатором транзакции которого
был отправлен менее чем 2.5 секунды назад, плата повторно отправляет тот же ответ без реальной
обработки запроса. Учитывая, что SW-01 "морозит" идентификаторы 3 секунды после завершения
транзакции, это должно быть безопасно.

Closes #391.

2054 by alx on 2022-04-18 14:45:54
Маскарадинг INVITE перенесен из шлюза в прокси-сервер.
Конфигурационный флаг маскарадинга разделен на два:

  • маскарадинг INVITE от канальных окончаний шлюза;
  • маскарадинг INVITE от внешних UA.

Дополнительно принадлежность отправителя сообщения к
"нашим" пользователям теперь проверяется методом isMyUri()
прокси-севрера. Closes #390.

2041 by alx on 2022-03-11 17:03:09
Переменной .6.0 добавлена возможность чтения для отображения в веб-интерфейсе.
2040 by alx on 2022-03-11 15:15:46
Добавлена переменная .30.8.1.0, задающая имя хоста сервера NTP.
Если значение - пустая строка (это значение по умолчанию),
используется адрес платы SW-01, как это и было раньше.
2031 by alx on 2022-02-21 15:14:33
Канальному окончанию DS добавлен конфигурационный параметр "tx-on",
устанавливающий сигнал, передаваемый в канал при подключении оператора.
Closes #386.
1995 by alx on 2022-01-28 16:40:45
Если при попытке создать соединение MSP возвращает ошибку 0xfffd (ERR_TDMDRV_INVTS),
что бывает в случае, когда соединение с таким номером таймслота уже существует,
выполняется попытка найти и уничтожить это соединение, после чего повторить
неудавшуюся ранее попытку создания. Проверено на синтетическом тесте. Closes #355.
Также убраны ненужные VOPENA перед уничтожением соединения.
1994 by alx on 2022-01-28 12:30:46
В ответах SIP вместо Remote-Party-ID передается P-Asserted-Identity.
1993 by alx on 2022-01-27 16:44:19
Добавлена поддержка регулярного выражения from URI в маршрутах SIP. Closes #353.
1991 by alx on 2022-01-26 18:17:28
Устранили предупреждения компилятора.
1990 by alx on 2022-01-26 18:13:31
При включении генерации КПВ методом startTone() канальное окончание запоминает этот факт, и при повторных
вызовах startTone() для включения КПВ, если генерация КПВ уже была включена ранее, ничего не делает.
Closes #330.
1989 by alx on 2022-01-26 17:16:54
Когда в ответе SDP отвергается медиапоток, в целях уменьшения размера сообщения
не указываются никакие атрибуты отвергнутого медиапотока.
1988 by alx on 2022-01-25 12:33:33
Канальному окончанию FXS добавлен конфигурационный флаг "Инверсия СУВ". Closes #385.
1985 by alx on 2021-12-29 12:40:15
Канальному окончанию R2DTMF добавлен конфигуарционный параметр таймаут набора номера.
Closes #383.
1980 by alx on 2021-12-28 12:31:15
Добавлен глобальный флаг GlobalFlagMasqueradeInvite, при установке которого в поле Contact
исходящего запроса INVITE указываются внешние адрес и порт платы. Closes #384.
1977 by alx on 2021-12-10 09:39:22
Сделана обработка широковещательного события eDisconnectEvent. Closes #380.
1976 by alx on 2021-12-03 09:57:46
Если при ответе канального окончания в localAnswer() не смогли послать "200 OK" в сеть IP,
то дескриптор соединения не отмечаем отвеченным и не запускаем таймер соединения.
Closes 379.
1975 by alx on 2021-12-02 19:00:23
При неудачном выполнении ответа в сторону сети IP окончание R1.5 переходит в исходное состояние. See #379.
1974 by alx on 2021-12-02 18:52:19
При неудачном выполнении ответа в сторону сети IP окончание FXS переходит в состояние Busy. See #379.
1973 by alx on 2021-12-02 18:46:21
При неудачном выполнении ответа в сторону сети IP окончание SS7 передает вызываемому сообщение REL,
деактивирует канал и переходит в исходное состояние. See #379.
1972 by alx on 2021-12-02 18:37:35
При неудачном выполнении ответа в сторону сети IP окончание DS передает в канал сигнал "Отбой" и переходит в исходное. See #379.
1971 by alx on 2021-12-02 18:27:23
При неудачном выполнении ответа в сторону сети IP окончание SL выполняет отбой и переходит в исходное. See #379.
1970 by alx on 2021-12-02 18:24:21
Вдогонку к предыдущему коммиту сделана обработка возможного неудачного завершения
вызова localAnswer() еще в одном месте, забытом ранее. See #379.
1969 by alx on 2021-12-02 18:21:49
При неудачном выполнении ответа в сторону сети IP окончание EM освобождает канал и переходит в исходное состояние. See #379.
1968 by alx on 2021-12-02 18:18:27
При неудачном выполнении ответа в сторону сети IP окончание МБ передает в канал
отбой и переходит в исходное состояние. See #379.
1967 by alx on 2021-12-02 18:13:47
При неудачном выполнении ответа в сторону сети IP окончание АДАСЭ передает в канал
отбойный сигнал и переходит в исходное состояние. See #379.
1966 by alx on 2021-12-02 17:57:10
При неудачном выполнении ответа в сторону сети IP окончание PPD выполняет hangup() и переходит
в исходное состояние, опционально выдав сигнал "Выключить ретрансляторы". See #379.
1965 by alx on 2021-12-02 17:50:34
При получении ответа из канала TDM и неудачной отправке "200 OK" в сети IP
канальное окончание R2DTMF передает в канал отбой и переходит в блокировку. See #379.
1964 by alx on 2021-12-02 17:48:12
При получении ответа из канала TDM и неудачной отправке "200 OK" в сети IP
канальное окончание R2 передает в канал отбой и переходит в блокировку. See #379.
1963 by alx on 2021-12-02 17:39:53
При неудачном выполнении ответа в сторону сети IP окончание PRI выполняет pri_hangup(). See #379.
1962 by alx on 2021-12-02 12:26:15
Переделан алгоритм отбоя по таймауту RTP. Теперь вместо индикации изменения состояния потока RTP от MSP
текущее состояние потока RTP определяется на основании получаемой от MSP статистики. Closes #378.
1961 by alx on 2021-12-01 16:36:16
При неудачном выполнении ответа в сторону сети IP окончание 1IND выполняет send_disconnect(). See #379.
1960 by alx on 2021-11-30 18:01:55
При неудачном выполнении ответа в сторону сети IP окончание FXO выполняет hangup(). See #379.
1959 by alx on 2021-11-26 17:20:19
При повторном вызове eXosip_call_terminate() по флагу terminated вместо установленного дивлога (did)
проверяется MSG_IS_RESPONSE_FOR(je->response, "INVITE").
Если eXosip_call_terminate() завершается ошибкой ISIP_WRONG_STATE, в лог не выводится сообщение.
1958 by alx on 2021-11-25 18:25:56
При получении ответа в диалоге, ранее помеченног флагом terminated,
eXosip_call_terminate() вызывается только в случае, если диалог установлен (did != 0).
Также флаг terminated сбрасывается только при успешном завершении eXosip_call_terminate().
See #373.
1957 by alx on 2021-11-24 14:29:36
При логгинге в файл сохраняется 10 файлов. Размер файлов также увеличен до 10 Мбайт.
1953 by alx on 2021-11-17 11:37:54
Если в параметре "Горячая линия" канального окончания FXS указан домен (есть символ '@'),
то указанный домен используется при отправке INVITE и имеет приоритет перед другими конфигурационными
параметрами ("To домен" и "SIP URI"). Closes #375.
1949 by alx on 2021-09-29 18:03:41
Если канальное окончание FXO получало ошибку от ua_dial_out(),
callerName оставалось не очищенным. Теперь очищается все.
1948 by alx on 2021-09-29 18:02:04
При получении Caller-ID "непечатные" символы заменяются на '?'.
1946 by alx on 2021-09-23 10:11:24
Отключен авто-маскарадинг контакта при регистрации.
1945 by alx on 2021-09-20 18:30:50
Добавлен новый глобальный параметр T1 для установки таймаута SIP T1. Closes #372.
1944 by alx on 2021-09-10 17:48:53

Канальное окончание FXO передает причину отбоя:

  • при отбое по причине отсутствия dialtone - 502 "No dialtone";
  • при отбое по прекращению сигналов вызова TDM до ответа со стороны SIP - 487 "ORIGINATOR_CANCEL".
1943 by alx on 2021-09-10 15:00:34
Исправлена ошибка: при получении ответа 1xx или при получении ACK неверно проверялось
наличие SDP в принятом сообщении. В результате был возможен ложный отбой с reason "Incompatible media parameters".
1940 by alx on 2021-09-07 11:42:54
При изменении кодека без пересоздания канала, если ранее использовался кодек EVRC*,
прежде чем активировать новый кодек выполняется отключения DTX. Fixes #371.
1935 by alx on 2021-09-02 09:28:38
Несущественная правка, устраняющая возможное зависание при запуске udhcpc. See #354.
1932 by alx on 2021-09-01 10:17:55
При получении от MSP ALERT типа 1 выполняется перезагрузка платы даже если в поле action
нвходится 0 ("ничего не надо делать"). See #370.
1930 by alx on 2021-08-13 14:41:09
repro версии 1.12.0 при старте "портит" установленные обработчики сигналов, из-за чего
процесс sip_ua невозможно остановить. Для устранения этой проблемы обработчик заново
переустанавливается после каждого старта repro.
1929 by alx on 2021-08-12 12:10:15
Добавлена возможность наличия двух маршрутов с одним регулярным выражением, но разным порядком.
1925 by alx on 2021-08-05 11:51:18
Выставлен флаг поддержки SS7.
1924 by alx on 2021-08-05 11:49:25
При выполнении set_eth_hdr_chan() больше не выполняется предварительная разрегистрация всех протоколов
(это приводило к кратковременному прерыванию звука). Closes #364.
1923 by alx on 2021-08-05 11:48:08
Канальные окончания SS7lnk периодически (каждые 10 секунд) обновляют статистику HDLC.
1922 by alx on 2021-08-05 11:32:35
Понижен приоритет вывода в лог сообщения "doSessionAccounting(): session xxx not found"
1921 by alx on 2021-08-02 17:52:28
Канальное окончание PRI при получении dosconnect_event_t с cause кодом
использует этот cause код при отправке REL. Closes #368.
1920 by alx on 2021-08-02 17:46:39
Канальное окончание SS7 при получении dosconnect_event_t с cause кодом
использует этот cause код при отправке REL. See #368.
1919 by alx on 2021-08-02 16:39:46
В событие disconnect_event_t добавляется sip_cause при тобое по таймауту.
Убран отладочный вызов.
1918 by alx on 2021-08-02 16:38:34
Начиная с libeXosip2-5.1.0 в eXosip_call_send_ack() вместо did передается tid. Исправлено.
1917 by alx on 2021-08-02 15:53:33
Событие eDisconnectEvent теперь передается только в виде объекта класса disconnect_event_t.
1916 by alx on 2021-08-02 15:52:46
В событии disconnect_event_t по умолчанию поля q850_cause и sip_cause имеют значение 0.
1915 by alx on 2021-08-02 15:02:44
При отбое канального окончания PRI со стороны TDM в сообщение SIP добавляется заголовок Reason.
1914 by alx on 2021-08-01 16:22:43
При отбое со стороры TDM канальное оконачние SS7 передает Reason.
1913 by alx on 2021-08-01 16:17:02
Методу SIPChannel::hangup() добавлен необязательный параметр reason для передачи
в заголовке Reason сообщения SIP.
1912 by alx on 2021-08-01 16:15:27
Функции ua_hangup() добавлен необязательный параметр reason для передачи
в заголовке Reason сообщения SIP.
1911 by alx on 2021-07-31 23:15:33
При входящем вызове канального окончания FXS или SIP-пользователя с административной блокировкой входящих вызовов
после воспроизведения анонса вызывающему отправляется SIP ответ с кодом 603 (ранее был 480) и полем Reason.
1910 by alx on 2021-07-31 23:07:03
В конструкторе класса DVOAnnounce183 добавлена возможность дополнительно указать значение
поля Reason, которое будет добавлено в окончательный ответ SIP после воспроизведения анонса.
1909 by alx on 2021-07-31 23:04:47
Функции ua_response_status() добавлен необязательный параметр reason для добавления поля Reason в ответ SIP.
1908 by alx on 2021-07-31 23:00:55
Событию disconnect_event_t добавлены новые поля для указания причины разъединения.
1907 by alx on 2021-07-30 12:30:40
Merged from branches/ss7-libss7 (добавлена поддержка SS7).
Флаг поддержки SS7 пока не выставлен.
1837 by alx on 2021-06-28 12:08:36
Убрали подключение хедеров от yate.
1807 by alx on 2021-06-15 12:40:55
Устранено предупреждение в лог о неизвестном статусе c-ares при попытке пинга несуществующего хоста.
1806 by alx on 2021-06-15 10:03:42
Добавлена функция ping.
1805 by alx on 2021-06-08 16:18:59
В полупостоянных потоках RTP при использовании кодеков GSM, GSM-EFR, GSM-HR-08,
AMR, EVRC, EVRC0, EVRCB, EVRCB0 авария LOS формируется даже при использовании VAD.
Closes #359.
1803 by alx on 2021-05-19 17:56:01
Канальному окончанию PPS добавлены конфигурационные параметры, устанавливающие передаваемый в канал
и принимаемый из канала (дополнительный) сигналы включения ретрансляторов. Closes #363.
1800 by alx on 2021-02-22 18:13:53
Канальному окончанию АДАСЭ добавлен новый конфигурационый параметр - межсерийная пауза при передаче номера в канал.
See #357.
1799 by alx on 2021-02-22 18:08:14
Канальному окончанию FXO добавлен новый конфигурационный параметр - межсерийная пауза
при передаче номера в канал импульсным способом. See #357.
1796 by alx on 2021-02-21 17:27:47
Реализована функция "громкого боя" для SIP-пользователей. See #310.
1795 by alx on 2021-02-21 17:07:42
Функции поллера write_reg() и read_reg() переименованы в spi_write_reg() и spi_read_reg()
соответственно и сделаны глобальными. Прототипы добавлены в poller.h.
1794 by alx on 2021-02-20 09:35:48
Канальному окончанию АДАСЭ добавлена возможность делать дополнительную паузу в
процессе набора номера. Пауза в номере обозначается символом 'p'. Длительность
паузы конфигурируется. Closes #357.
1793 by alx on 2021-02-07 20:40:49
Добавлена периодическая проверка наличия процессов udhcpc (если требуется) и ntpclient.
Если вдруг обнаруживается, что процесс, который должен работать, отсутствует,
выполняется его запуск. Closes #354.
1785 by alx on 2020-10-12 16:21:39
В канальном окончании АДАСЭ если цифр номера для передчи в канал нет,
то после передачи сигнала "Занятие" не делается пауза 1000 мс, а также
не делается межсерийная пауза 700 мс. Closes #352.
1766 by alx on 2020-09-23 09:54:50
Вернули блокировку запросов SUBSCRIBE в repro.
1758 by alx on 2020-09-09 17:22:45
Добавлен глобальный параметр исключений блокировок исходящих вызрвов.
1756 by alx on 2020-09-01 15:46:55
Исправлена ошибка: в плату SW-01 не передавались обновления состояния канала 256 (TS255).
1753 by alx on 2020-06-22 11:15:02
Канальному окончанию PRI добавлен конфигурационный параметр "Рег. выражение набора".
1751 by alx on 2020-06-21 21:20:41
Устранен баг, проявлявшийся в случае, когда медиапоток отключали в момент, когда
выполняется релеинг сигнала DTMF (например отбой соединения по приему DTMF из канала TDM).
В этом случае активация медиапотока в следующем сеансе начиналась с передачи RTP end DTMF,
приводившего к генерации ненужного DTMF получатедем медиапотока. Теперь перед отключением
медиапотока выполняется send_DTMFOPT(-1), запрещающая релеинг DTMF. Closes #351.
1743 by alx on 2020-05-07 10:20:25
Исправлены ошибки: забывали закрыть сокет в set_iface_up() и getMac().
1741 by alx on 2020-04-29 16:38:43
Исправлена ошибка: при получении сообщения, адресованного нам из чужого домена,
которое посредством таблицы маршрутов перенаправлялось в еще один чужой домен,
прокси-сервер требовал аутентификации при любых значениях настроек. Closes #349.
1739 by alx on 2020-03-16 16:28:40
Изменены пороги детектирования частот канальных окончаний АДАСЭ: пороги снижены
таким образом, чтобы сигналы устойчиво принимались при уровне -17 дБм. Closes #340.
1733 by alx on 2020-02-26 16:52:26
Вызовы system(), с помощью которых перезапускался syslogd при изменении режима журналирования
заменены на эквивалентную последовательность fork()-exec()-wait(). Этим устранена ошибка,
возникавшая при последующем пересоздании транспортов при рестарте repro, приводившая к
выбрасыванию исключения "port already in use" и, в конечном итоге, падению из-за обращения
по NULL-указателю mProxy при попытке применить список маршрутов SIP. Closes #335.
1732 by alx on 2020-02-26 16:22:51
Добавлена дополнительная проверка в rename_if_differ(): если файл-источник пустой
или отсутствует, и при этом файл-приемник также отсутствует или пустой, функция
возвращает false, считая что различий нет. Это позволяет избавиться от ненужных
рестартов repro при записи конфигурации, в которой отсутствуют сертификаты SSL.
1731 by alx on 2020-02-25 15:03:49
При получении не-INVITE запроса с Replaces возвращается ответ "400 Bad request". Closes #305.
1730 by alx on 2020-02-06 12:41:02
Добавлена поддержка сборки с repro-1.12.0.
1729 by alx on 2020-02-04 11:17:17
В канальном окончании DS сигнал "отбой" передается в канал при отключении
конференции, а не оператора.
1728 by alx on 2020-02-03 18:36:12
Добавлено канальное окончание DS.
1726 by alx on 2020-01-30 12:34:39
При повторном вызове startRTP() выполняется sendVCEOPT() для применения параметров,
которые могли измениться (например включение/выключение VAD).
1725 by alx on 2020-01-14 18:04:07
Устранены перезагрузки при изменении сетевых настроек по аналогии с r1742 в VE-02.
1721 by alx on 2020-01-13 17:14:34
При выставлении флага comcerto_heartbeat не учитывается флаг статуса 0x8000 (Alert Status).
Как показала практика, в некоторых случаях (если при старте получали поток UDP из сети)
этот флаг может приходить сброшенным, что приводило к перезагрузкам по Watchdog.
1695 by alx on 2019-12-18 15:29:53
Всем канальным окончаниям SIP добавоен конфигурационный параметр Realm.
1694 by alx on 2019-12-18 12:35:18
Добавлен глобальный флаг, предписывающий прокси-севреру требовать аутентификации запросов
нашему домену из чужих доменов.
1693 by alx on 2019-12-14 10:05:05
Убран лишний комментарий.
1692 by alx on 2019-12-11 17:04:48
В stopRTP() сначала выключается RTP с помощью VCEOPT, и уже потом выключается RTCP.
Вероятно, это помогает каждый раз передавать RTCP Bye.
1689 by alx on 2019-11-19 17:30:52
Исправлена ошибка в repro_dvo_event(): при включении платы она получает настройки ДВО
раньше, чем список пользователей. При применении же настроек ДВО проверялось существование
пользователя. В результате, так как ни одного пользователя еще не существовало, настройки ДВО
не применялись. Теперь проверка существования пользователя убрана.
1685 by alx on 2019-11-19 16:01:26
SIP пользователям добавлена поддержка блокировок входящих и/или исходящих вызовов.
1684 by alx on 2019-11-14 17:25:41
При отправке сообщений REFER и INVITE с Replaces в сообщение добавляется поле Referred-By. Closes #239.
1683 by alx on 2019-11-14 15:27:17
SSRC в пакетах RTP генерируется случайным образом индивидуально для каждого канала и каждой сессии.
1679 by alx on 2019-10-30 10:10:32
Исправлена опечатка в имени команды "ctime", из-за чего текущее время, получаемое из
платы SW-01 по служебной шине SPI, игнорировалось платой VE-01 ("ctime" воспринималось
как неизвестная команда).
1678 by alx on 2019-10-24 12:15:48
При создании канала ему устанавливается NTP timestamp для RTCP.
1672 by alx on 2019-10-24 09:35:27
При уничтожении канального окончания EM выключается CAS Monitor (иначе потом было невозможно создать
другой тип канального окончания на этом канале).
1671 by alx on 2019-10-23 18:31:03
Исправлена ошибка: из-за излишней оптимизации при выполнении setRTPparams() не выполнялась посылка VOPENA
если кодек и Payload Type не менялись с прошлого раза. В результате могла отсутствовать слышимости второго
и последующих соединений окончания 1IND и, вероятно, других (точная причина и сценарий пока не выявлены).
Как временное (а, возможно, и постоянное) решение выполняется посылка VOPENA при каждом вызове setRTPparams().
1668 by alx on 2019-10-18 13:39:26
Если изменяется только приоритет логирования, но не режим,
перезапуск syslogd не производится.
1667 by alx on 2019-10-18 13:30:58
В классе SIPChannel добавлен метод makeFrom(), формирующий NameAddress (SIP URI)
из реального имени и параметра URI канального окончания. Везде этот код заменен
вызовом makeFrom().
В канальном окончании PRI метод makeFrom() перевызывает соответствующий метод
контроллера PRI (D-канала). Этим исправлена ошибка, приводившая к невозможности
сформировать INVITE при настройке "Передавать Caller-ID" отличной от "FROM",
так как B-каналы транка PRI не имели параметра URI.
1666 by alx on 2019-10-18 12:13:17
Исправлена ошибка: в случаях, когда канальное окончание PRI не могло послать INVITE,
то не выполнялся pri_hangup(), так как на момент его выполнения уже была очищена переменная call.
В результате вызывающий не получал DISCONNECT.
1665 by alx on 2019-10-18 11:43:43
Если канальное окончание PRI не смогло послать INVITE, то очищается дескриптор вызова
(ранее в нем оставалось имя и номер вызывающего абонента, отображаемые в веб-интерфейсе).
1662 by alx on 2019-10-17 15:12:38
Канальное окончание PRI транслирует отображаемое имя вызывающего абонента
при получении вызова со стороны TDM в сторону сети IP.
1661 by alx on 2019-10-17 14:59:26
При получении входящего INVITE из отображаемого имени вызывающего абонента удаляются кавычки.
1659 by alx on 2019-10-16 18:00:36
Из окончания EM убрана обработка событий eCASactivity.
1658 by alx on 2019-10-16 17:38:40
Канальное окончание EM теперь использует setSignalingMonitor() для мониторинга
СУВ во время бездействия канала. Сделана поддержка флага инверсии СУВ.
1657 by alx on 2019-10-16 17:35:07
Добавлен метод setSignalingMonitor().
1656 by alx on 2019-10-16 15:18:33
В канальном окончании EM улучшена работа с СУВ: при активации канала сразу вызывается suv_on(),
этим устранена возможность потери первого импульса.
Таймер реакции на деактивацию СУВ в состоянии Connected увеличен до 200 мс (иначе были проблемы при
переходе из режима T.38 в голосовой режим - принимается импульс ~26 мс несмотря на замороженность СУВ).
1655 by alx on 2019-10-16 12:29:32
Параметры PTDOPT теперь запоминаются классом ComcertoChannel.
При создании канала VoIP автоматически выполняется setPTDOPT().
Из производного класса SLChannel убрали createConnection() с вызовом setPTDOPT().
1654 by alx on 2019-10-16 10:45:00
Канальному олкончаию SL разрешена работа в режиме T.38.
Исправлены мелкие недочеты.
1653 by alx on 2019-10-16 10:41:29
Исправлена ошибка: если после перехода в режим VBD канальное окончание получало RTP Parameters,
то "VBD" в веб-интерфейсе менялось на название кодека. Теперь название кодека присваивается только
в случае, если оно пустое, или изменилось с предыдущего получения параметров.
1652 by alx on 2019-10-16 10:09:20
При создании канала RTPMonitorEna() выполняется только для канала типа VoIP.
1651 by alx on 2019-10-15 16:24:16

В канальном окончании SL:

  • исправлена ошибка - запущенный таймер не выключался.
  • улучшен прием сигнализации в режиме 600+750 Гц.
1650 by alx on 2019-10-15 10:36:21
Фильтр для сигнализации 600+750 Гц теперь фильтрует только 600 Гц.
750 Гц детектируются через PTD.
1649 by alx on 2019-10-15 10:06:55
Добавлено канальное окончание SL.
1648 by alx on 2019-10-15 09:35:17
Добавлена функция setPTDOPT().
1647 by alx on 2019-10-11 18:29:49
Замораживаются СУВ на время пересоздания соединения (предотвращает разрыв при активации SRTP и/или T.38).
1646 by alx on 2019-10-11 18:28:50
Изменен порядок кодирования вариантов протокола канального окончания EM.
1645 by alx on 2019-10-11 16:39:38
В окончании EM время ожидания сигнала задержки уменьшено до 150 мс (как указано в большинстве статей).
1644 by alx on 2019-10-11 16:24:56
У окончаний EM реализована передача и прием номера DTMF.
1643 by alx on 2019-10-11 16:05:03
В окончании EM реализован вариант протокола "немедленное подтверждение".
1642 by alx on 2019-10-11 15:03:55
В окончании EM реализован вариант сигнализации "задержка старта".
1641 by alx on 2019-10-11 14:40:53
У канального окончания EM работают варианты "wink" и "немедленный старт".
1640 by alx on 2019-10-11 11:00:10
Добавлено канальное окончание EM.
1636 by alx on 2019-10-08 18:19:41
Исправлена ошибка: при включении избыточности для полупостоянного потока RTP MSP
начинал использовать отключенную схему кодирования (Payload Type был установлен в 0xff),
в результате поток RTP генерировался на передачу, но не обрабатывался принимаюбщей стороной.
Теперь потоки с избыточностью генерируются с Payload Type 127 (0x7f). Closes #327.
1623 by alx on 2019-10-02 10:25:38
Исправлена ошибка: если канальное окончание АДАСЭ получало "отбой" со стороны TDM
в состоянии Calling, то после перехода в исходное в канал продолжал передаваться
сигнал КПВ.
1618 by alx on 2019-09-30 18:21:01
Добавлены глобальные флаги, определяющие, в каком заголовке канальное окончание отправляет Caller-ID:

  • From;
  • Remote-Party-ID;
  • P-Asserted-Identity.

Добавлены глобальные флаги, определяющие, из какого поля брать Caller-ID и в каком порядке.
Closes #11.

1608 by alx on 2019-09-26 16:02:23
Реализовано изменение режима журналирования записью значения переменной .30.6.1.0.
1607 by alx on 2019-09-26 09:50:42
Добавлена переменная, устанавливающая параметры логгирования.
Пока можно изменять только текущий приоритет. See #285.
1605 by alx on 2019-09-25 14:57:17
Канальным окончаниям FXS добавлен конфигурационный флаг "Расширенные параметры имп. набора".
При его установке максимальная длительность размыкания шлейфа, воспрниимаемая как импульс
набора номера, увеличивается до 120 мс. Closes #325.
1604 by alx on 2019-09-25 13:17:48
Канальному окончанию FXO добавлен конфигурационный флаг передачи номера импульсным способом.
При импульсном наборе номера длительности импульса и паузы 50 мс (импульсный коэффициент 1).
Добавлено новое состояние Dialing, соответствующее передаче номера. Closes #326.
1602 by alx on 2019-09-16 15:39:43
В случае, когда канальному окончанию установлен флаг "Принимать вызовы только через безопасный транспорт"
(SipFlagOnlySecure), безопасность транспорта проверяется канальными окончаниями только если вызываемый
URI совпадает с URI канального окончания или регулярным выражением вызова. Closes #303.
1600 by alx on 2019-09-06 11:18:05
В функцию comcerto_set_ip6() добавлена передача MSP команды IP_ADDRESS_v6.
Без этого хост не получал от MSP некоторые мультикастовые пакеты, например
запросы NDP, что приводило к отсутствию связи. Closes #320.
1598 by alx on 2019-09-05 13:57:47
Устранена проблема ложного разрыва соединений по таймауту RTP.
Раньше индикация появления/пропадания потока RTP включалась при
активации потока каналом и выключалась при деактивации, в результате
могли теряться сообщения о появлении потока. Теперь индикация включается
сразу после создания канала (до любых других настроек) и никогда не
отключается. Таймаут RTP теперь отсчитывается только от сообщения о
пропадании потока RTP. Если RTP не было принято вообще, разъединения
по таймауту не будет. Closes #276.
1597 by alx on 2019-06-27 18:54:30
Добавлены настройки biquad-фильтров для детектирования частоты 2600 Гц
и комбинации частот 600+750 Гц.
1591 by alx on 2019-04-02 15:04:29
Исправлена мелкая ошибка: после получения MAC адреса получателя в setRTPparams()
и сохранения его в rtp_dst_mac этот адрес мог "обнулиться" в результате вызова stopRTP().
В результате через 2 минуты после старта потока RTP в лог выводилась запись "starting
RTP stream to..." как если бы MAC адрес изменился.
1584 by alx on 2019-03-27 10:50:50
Канальное окончание МБ при получении сигнала 2100 Гц проверяет конфигурационный параметр
"Вызывать URI". Если он пустой, вызов в сеть IP не передается.
1583 by alx on 2019-03-25 17:48:38
Реализовано канальное окончание МБ (2100 Гц).
1557 by alx on 2019-02-20 14:36:56
Merged r1556 (See #304).
1552 by alx on 2019-02-14 13:03:46
Исправлены опечатки в комментариях.
1551 by alx on 2019-02-14 13:00:21
Из канального окончание R2DTMF удален конфигурационный параметр "Таймаут набора".
Принимающая станция всегда заранее знает количество требуемых цифр, то есть
окончание набора определяется только параметрами "Рег. выражение набора" и
"Макс. длина номера".
1550 by alx on 2019-02-14 12:36:23
Исправлена ошибка, в результате которой при некоторых условиях "терялось"
название используемого кодека, что позже приводило к лишнему пересозданию
медиапотока (See #161), что приводило к заметному на слух прерыванию звука
(например при ответе вызываемого абонента).
1549 by alx on 2019-02-14 12:29:55
Добавлено канальное окончание R2DTMF.
1548 by alx on 2018-12-30 21:55:38
Как выяснилось, событие EXOSIP_CALL_CLOSED может генерироваться библиотекой
libeXosip2 не только при получении запроса BYE, но и без всякого запроса,
например по таймауту какой-либо транзакции. В этом слуае указатель request
события равен NULL. Ранее в подобных случаях происходило падение при попытке
проверить Require несуществующего запроса. Теперь добавлены проверки
указателя request.
1547 by alx on 2018-12-29 23:27:43
Событие eHaveMedia объединено с событием eCallRinging. В событии eCallRinging теперь
передается код ответа.
В канальных окончаний при получении события eCallRinging проверяется код ответа, и
RingBack тон передается только при получении ответа 180.
Здесь же добавлены проверки наличия потока RTP, и если он есть, выполняется stopTone().
1546 by alx on 2018-12-29 11:05:41
Коммиты 1542 и 1544 откачены, так как предпринятые меры не привели к реальному улучшению,
а в результате изменения алгоритма есть шанс сломать то, что уже работало. See #302.
1544 by alx on 2018-12-29 09:32:18
Канальное окончание 1IND не передает сигнал "Б свободен" при получении
"180 Ringing" - мы уже передавали этот сигнал до посылки INVITE. See #302.
1543 by alx on 2018-12-27 16:08:45
Замена CID в процессе выполнения полученного REFER выделена в отдельный тип события
eCidReplaced. Теперь при получении INVITE с Replaces, как и раньше, генерируется
eCallReplace, а при выполнении ua_refer_to() - eCidReplaced.
1542 by alx on 2018-12-26 16:23:23
Изменены логика работы канальных окончаний 1IND при входящем МГ вызове.
После завершения приема номера канальное окончание сразу передает сигнал
"Б свободен", после чего переходит в новое состояние BFree, ожидая сигнала
"Послать вызов". После получения сигнала "Послать вызов" выполняется либо
запрос АОН, либо сразу отправка INVITE - как и при местном вызове.
Closes #302.
1533 by alx on 2018-12-25 13:53:17
Исправлены опечатки в сообщениях.
1528 by alx on 2018-12-14 15:03:17
Если в полученном запросе INVITE есть Require, его тэги сохраняются в
CallData. При передаче предварительных ответов на запрос выполняется
проверка наличия тэга 100rel в поле Require запроса. Если 100rel там есть,
то предварительный ответ отправляется надежно даже если надежная отправка
предватительных ответов запрещена глобальным флагом.
1527 by alx on 2018-12-13 15:36:45
При получении запроса с полем Require проверяется наличие в нем
неподдерживаемых нами расширений, и если такие есть, дается
ответ 420.
1526 by alx on 2018-12-13 09:54:37
Исправлена ошибка: если у полупостоянного потока RTP отсутствует входной поток,
но включен VAD, авария LOS не генерируется, и если затем отключить VAD, авария
потока так и не появляется. Closes #258.
1525 by alx on 2018-12-12 18:02:32
Исправлена ошибка: при получении канальным окончанием PRI события eHangup
возникал односторонний отбой, так как eHangup обрабатывался только базовым классом.
Теперь канальному окончанию PRI добавлена обработка события eHangup. Closes #268.
1524 by alx on 2018-12-12 15:43:48
При передаче вызова выполняется проверка поддержки UAS'ами REFER и replaces.
REFER передается только если один UAS поддерживает REFER, а другой - replaces.
Closes #297.
1523 by alx on 2018-12-12 15:11:07
Исправлена ошибка: при получении NOTIFY после отправки REFER
при анализе поля Event не учитывалась возможность наличия параметров,
например "Event: refer;id=23". Теперь параметры исключаются из
типа события.
1522 by alx on 2018-12-12 14:23:17
Исправлена опечатка в имени переменной.
1521 by alx on 2018-12-12 14:22:12
Исправлена ошибка: при получении ответа от удаленного UAS поле Allow анализировалось
не из полученного ответа, а из отправленного запроса. See #245.
1520 by alx on 2018-12-12 11:54:10
Событиям call_event_t и answer_event_t добавлены поля isfocus, которые устанавливаются
при наличии в поле Contact параметра isfocus (то есть если это фокус конференции).
Классу CallDescriptor добавлено поле isConference, которое устанавливается, если
это соединение с фокусом конференции.
Канальное окончание FXS, когда абонент объединяет два соединения в конференцию,
проверяет, не является ли одно из имеющихся соединений фокусом конференции, и если да,
то вместо создания новой конференции использует уже существующую.
1519 by alx on 2018-12-11 18:42:16
В CallData добавлено поле forceContact, в которое помещается значение контакта
при вызове ua_response_status() с указанием непустого значения contact.
Всем последующим ответам в этом диалоге также устанавливается заданный контакт.
Closes #248.
1518 by alx on 2018-12-11 14:30:04
Решение о начале или прекращении сигнала вызова принимается только
если СУВ A стабилен не менее 50 мс. Closes #281.
1517 by alx on 2018-12-11 12:35:58
В канальном окончании FXO убран неиспользуемый параметр last_cas_timestamp.
1516 by alx on 2018-12-11 12:20:02
Внутри setRTPparams() убраны ненужные отключения потока RTP:
добавлены проверки, соответствуют ли требуемые кодеки/PT
уже установленным, и если да (то есть кодек/pt не изменились),
остановка и перенастройка потока RTP не производится, чем
устранены заметные на слух паузы, которые могли возникать,
например, в момент ответа. Closes #161.
1515 by alx on 2018-12-11 09:51:10
Реализована надежная отправка предварительных ответов если удаленный UAC
поддерживает 100rel. Реализована перепосылка предварительных ответов
при неполучении PRACK.
1513 by alx on 2018-12-10 18:13:03
Добавлена поддержка работы со старой libeXosip-4.1.0, так как версия 5.0.0
оказалась сырая и не очень рабочая (проблема с cseq PRACK).
1511 by alx on 2018-12-07 15:19:29
Устранено "подвисание", которое могло приводить к перезагрузкам при
ручном завершении процесса. Это иногда очень мешало отладке.
1509 by alx on 2018-12-07 10:35:46
Исправлена ошибка: канальное окончание 256 не отправляло в плату SW-01
уведомления об изменении настроек ДВО.
1491 by alx on 2018-11-29 17:45:41
Исправлена ошибка: если во время транзакции INVITE (например во время ожидания
ответа вызываемого абонента) происходит новая транзакция в этом же диалоге
(например это может быть транзакция PRACK), поле tid в CallData обновляется и
содержит вместо идентификатора транзакции INVITE идентификатор новой транзакции.
В результате когда абонент отвечает, UA не может послать ответ "200 OK", так как
tid содержит идентификатор совсем другой, уже завершенной транзакции.
Теперь tid в CallData обновляется только в том случае, если сообщение принадлежит
транзакции INVITE. Функции ua_response_status() добавлен параметр tid, по
умолчанию равный нулю, позволяющий при необходимости послать ответ не-INVITE
транзакции указать TID этой транзакции. Если равен нулю, ответ посылается
транзакции ca->tid, как это и было раньше.
1490 by alx on 2018-11-29 14:55:38
Добавлены дополнительные проверки на то, что hvalue заголовков не NULL.
1489 by alx on 2018-11-29 14:40:55
Добавлена частичная поддержка 100rel: при приеме надежных предварительных ответов
отправляется сообщение PRACK. Сами надежные предварительные ответы пока не отправляем.
See #138.
1488 by alx on 2018-11-29 11:36:17
Как выяснилось, libosip2 представляет заголовки Supported и Allow как списки тэгов.
Поэтому в CallDta строки supported и allow заменены на набор capabilities.
Соответственно, ua_is_ext_supported() и ua_is_allowed() заменены на ua_is_supported().
See #245.
1487 by alx on 2018-11-28 14:18:07
Значения полей Allow и Supported сохраняются в CallData. Closes #245.
1486 by alx on 2018-11-28 11:49:12
Исправлена ошибка: при изменении конфигурационного параметра "SIP прокси"
не происходила инициация новой регистрации. Closes #296.
1485 by alx on 2018-11-28 10:44:34
При работе с eXosip/5.0.0 опция EXOSIP_OPT_REMOVE_PREROUTESET
устанавливается в 0 для сохранения указания адреса прокси.
Closes #295.
1484 by alx on 2018-11-26 09:45:35
При старте параметру sysctl net.unix.max_dgram_qlen устанавливается
значение 256. See #285.
1482 by alx on 2018-11-23 09:48:12
В окончаниях 1IND оптимизирован прием номера: больше не создается
"синтетическое" событие eDtmfEvent.
1481 by alx on 2018-11-23 09:29:11
Из прокси убрана блокировка запросов SUBSCRIBE.
1480 by alx on 2018-11-23 09:27:13
Обновлен repro.config (взят от версии 1.10.2).
1477 by alx on 2018-11-21 12:26:35
Добавлено регулярное выражение исключений для административной блокировки
исходящих вызовов. Closes #294.
1476 by alx on 2018-11-21 12:24:23
Реализована функция "Ограничение некоторых видов связи".
1475 by alx on 2018-11-20 17:41:04
Добавлена функция административной блокировки абонента канального окончания
FXS (отдельно входящей и исходящей связи). Closes #293.
1474 by alx on 2018-11-20 17:33:47
Дефолтная версия repro стала 1.10.2.
1473 by alx on 2018-11-20 15:04:38
Исправлена ошибка: при активированном SRTP проигрывание файла в направлении TDM
приводило к шипению. Теперь перед проигрыванием канал пересоздается с отключенным
шифрованием. Closes #293.
1471 by alx on 2018-11-15 12:30:08
Добавлена установка адреса для RecordRoute транспортам при использовании
repro-1.10.2. Closes #217.
1469 by alx on 2018-11-09 19:21:16
Исправлен алгоритм определения встречного занятия (уменьшены временные "ворота"
для исключения ложного детектирования встречного занятия).
Исправлена ошибка: в случае встречного занятия вызов возвращался для повторного
поиска, но с измененным (регулярным выражением с подстановкой и/или паузой межгорода)
именем вызываемого абонента. Теперь исходное (не измененное) имя сохраняется и используется
в случае встречного занятия. Closes #288, #289.
1467 by alx on 2018-11-08 13:17:16
Во время передачи кодограммы АОН канал пересоздается с типом ComplexTone.
Ранее на время передачи кодограммы АОН передаваемые СУВ "замораживались",
а принимаемые не мониторились (исключая мониторинг через ПЛИС). Теперь
при создании канала типа ComplexTone активируется мониторинг СУВ, включается
передача нужной комбинации СУВ, и передаваемые СУВ "размораживаются".
Одновременно исправлена ошибка, из-за которой не работала инверсия СУВ
окончания 1IND в режиме T.38 (СУВ'ы не "замораживались").
1466 by alx on 2018-11-02 15:51:09
Канальным окончаниям 1IND добавлен конфигурационный параметр "interfig",
задающий межцифровую паузу при передаче номера в канал. Значение по
умолчанию - 500 мс. Closes #286.
1465 by alx on 2018-11-02 15:39:47
Канальным окончаниям 1IND добавлен конфигурационный параметр "mg-pause",
определяющий длительность дополнительной паузы при передаче номера в канал
после префикса межгорода (как в канальных окончаниях FXO). Значение
по умолчанию - 2 секунды. Closes #287.
1464 by alx on 2018-10-29 11:55:58
В окончании FXO в функции hangup() сначала вызывается hangup()
базового класса, а потом выполняется включение детектирования
CallerID. Этим устраняется падение MSP при отбое со стороны TDM
окончания FXO, находящегося на холде.
1463 by alx on 2018-10-29 11:52:11
Merged branches/regsync.
1461 by alx on 2018-10-26 17:49:41
Устранено сообщение об ошибке, возникавшее при создании окончания FXO
из-за того что команда CNDDETCTL посылалась в MSP до активации канала.
1460 by alx on 2018-10-26 17:43:32
Исправлена потенциальная ошибка - не было отключения таймера.
1459 by alx on 2018-10-26 16:28:29
Канальным окончаниям 1IND добавлен конфигурационный флаг
"Разрешить использование сигнала "Снятие ответа"". При его установке
после запроса АОН и приема ответа в канал передается линейный
сигнал "Снятие ответа", при получении запроса АОН и передачи ответа
в течение 500 мс ожидается сигнал "Снятие ответа", и если он не
поступает, вызывающему передается ответ "200 OK".
Кроме этого, если флаг не установлен, тональный сигнал 500 Гц не детектируется.
See #279, #280.
1458 by alx on 2018-10-26 10:15:46
Окончанию 1IND добавлен конфигурационный флаг, при установке которого
первый сигнал "Ответ" при исходящем вызове не считается запросом АОН,
если нет тонального сигнала 500 Гц.
1457 by alx on 2018-10-25 14:49:50
Канальным окончаниям 1IND добавлен конфигурационный флаг "Инверсия СУВ".
1446 by alx on 2018-10-22 17:41:56
setCIDdetection() перенесен из ComcertoChannel в FXOChannel,
так как иначе наблюдались какие-то странные проблемы в VE-02.
1441 by alx on 2018-10-17 18:51:50
Ответы на все запросы платы SW-01 передаются через очередь ответов. See #283.
1440 by alx on 2018-10-17 18:42:18
Метод Transport::txReady() переименован в Transport::txBufferEmpty() -
это более точно отражает смысл метода.
1439 by alx on 2018-10-17 18:40:46
В Transport::sendResponse() добавлена проверка свободности буфера передачи.
Этот метод теперь возвращает true если ответ из очереди был помещен в буфер
передачи и false если не был (очередь пуста или буфер не пуст).
1438 by alx on 2018-10-17 18:31:50
Передача ответов на запросы GET платы SW-01 реализована через очередь сообщений.
See #283.
1434 by alx on 2018-10-17 15:14:15
Исправлена ошибка, приводившая к бесконечной рекурсии и падению
при парсинге JSON-массива если последним символом JSON был '['.
1433 by alx on 2018-10-17 09:42:52
Устранен вывод в лог сообщения о попытке выполнить RTPMonitorEna()
при несозданном канале. В stopRTP() добавлена соответствующая проверка.
1432 by alx on 2018-10-15 10:33:24
setCIDdetection() перенесен из FXOChannel в ComcertoChannel.
При выполнении sendVCEOPT() предвариетльно отключается CIDdetection.

Устранено падение при отбое поставленного на холд соединения через FXO.

1431 by alx on 2018-08-14 13:58:57
Канальным окончаниям FXS добавлена функция выдачи дополнительного сигнала готовности
после набора префикса межгорода.
1430 by alx on 2018-08-14 10:26:49
Канальному окончанию FXO добавлена функция автоматической блокировки при обрыве линии.
В случае отсутствия dialtone в линии канальное окончание переходит в состояние NoDialtone,
и не принимает вызовы со стороны сети IP. В этом состоянии канальное окончание периодически
проверяет линию на появление dialtone. В случае появления dialtone канальное окончание
переходит в исходное.
1429 by alx on 2018-08-13 13:40:11
Исправлена ошибка: при поступлении очень короткого (менее 50 мс) импульса
0 по СУВ А (сигнал вызова) канальное окончание FXO могло перейти в состояние Ringing
и оставаться в нем неопределенно долго (независимо от параметра "Таймаут звонка")
до поступления следующего нуля по СУВ А.
1410 by alx on 2018-06-09 12:07:33
В канальных окончаниях 1IND и R1.5 изменено декодирование кодограммы АОН
таким образом, чтобы декодировались пакеты размером 11 и более символов.
1409 by alx on 2018-06-08 19:23:17
Исправлена ошибка: если канальное окончание 1IND получало
кодограмму АОН, содержащую менее 18 символов, это приводило
к падению из-за выхода индекса за пределы строки и перезагрузке платы.
Closes #271.
1407 by alx on 2018-05-21 11:16:28
Изменена логика настройки полупостоянных потоков RTP: теперь
setSignalingMode(20) вызывается только после старта потока RTP,
а перед остановкой вызывается setSignalingMode(0). Как показала
проверка, это устранило перезагрузки, вызывавшиеся прекращением
приема сообщений MSP от CSP. Closes #264.
1405 by alx on 2018-03-30 16:21:26
Исправлена ошибка: если после отправки окончанием FXS вызова в сеть IP
разомкнуть шлейф на время, большее чем максимальная длительность flash,
но меньшее чем таймаут отбоя (максимальная длительность flash + 50 мс),
то отбоя еще не происходило, но отрабатывался случай первоначального
снятия трубки. Далее при наборе номера или если установлен параметр
"Горячая линия" выполнялся новый вызов, а сделанный ранее "терялся" в
неотбитом состоянии. Теперь добавлена проверка на состояние Outgoing,
и описанное выше размыкание шлейфа игнорируется.
1402 by alx on 2018-02-21 15:46:11
Реализован собственный вариант StaticRoute по образцу имеющегося в repro.
Наш вариант берет параметры ParallelForkStaticRoutes и ContinueProcessingAfterRoutesFound
не из конфиг-файла, а из глобальных флагов.
1400 by alx on 2017-12-22 18:14:23
Исправлена ошибка: при принудительном отбое соединения нажатием
красной кнопки в веб-интерфейсе канальные окончания 1IND и MFC R2
не передавали отбой в сторону канала TDM (получался односторонний
отбой).
1399 by alx on 2017-12-22 17:29:26
Раньше при получении любого ALERT из MSP плата намеренно перезагружалась
"на всякий случай". Однако не любой ALERT является проблемой. В процессе
работы MSP может присылать безобидные (информационные) ALERT'ы, при
получении которых ничего делать не надо. Есть также ALERT'ы, связанные с
отдельным каналом. Теперь при получении ALERT'а проверяется его тип,
и перезагрузка платы производится только в случае серьезной проблемы.
При получении ALERT'а, связанного с каналом, каналу передается событие
eMspAlert, по которому канал пересоздается.
1392 by alx on 2017-12-18 15:06:48
Добавлен глобальный конфигурационный параметр confLimit, устанавливающий
максимальное число участников конференции для встроенного фокуса конференций.
Closes #233.
1391 by alx on 2017-12-07 18:33:07
При получении ответа OSIP_WRONG_STATE на вызов eXosip_call_terminate()
ua_hangup() устанавливает дескриптору вызова флаг terminated.
Позже при получении любого ответа в данном диалоге проверяется флаг
terminated, и если он установлен, повторно выполняется eXosip_call_terminate().
Closes #205.
1390 by alx on 2017-12-07 10:47:09
Описали в комментарии расширенный набор кодеков.
1389 by alx on 2017-12-05 18:36:12
Разрешили виртуальным каналам использовать полный набор кодеков.
Кодек G729E запрещен (работает странно).
1388 by alx on 2017-12-05 15:09:43
В ua_checkSupportedCodec() выполняется проверка параметра channels кодека AMR.
При ответе на предложение кодека AMR параметры robust-sorting, interleaving
и channels копируются из предложения (хотя robust-sorting и interleaving
не поддерживаются).
1387 by alx on 2017-12-05 14:47:02
Сделана поддержка параметра crc для кодека AMR.
1386 by alx on 2017-12-05 14:32:53
Добавлена поддержка octet-aligned версии кодека AMR.
1385 by alx on 2017-12-05 13:16:45
Убрали ненужные конфигурационные флаги, управляющие скоростью AMR.
1384 by alx on 2017-12-05 12:44:37
Кодек AMR теперь адаптирует скорость в зависимости от текущего значения
PLR (Packet Loss Ratio).
1383 by alx on 2017-12-05 12:43:37
Сконфигурированный кодек теперь хранится в локальной переменной codec_name.
Это позволяет модифицировать поле codec в состоянии канала, дополняя его
разной полезной информацией (например режимом для кодека AMR).
1382 by alx on 2017-12-04 11:39:40
Кодек AMR теперь поддерживает параметры mode-set, mode-change-period и
mode-change-neighbor. Декларируется параметр mode-change-capability=2.
1381 by alx on 2017-12-01 18:02:02
В addPayload() теперь передается хэш параметров кодека. Это позволяет вместо
одного maxinterleave передать сразу несколько произвольных параметров.
1380 by alx on 2017-12-01 17:39:53
Добавлена функция SET_BWE_PARAMS. Пока всегда устанавливает дефолтные значения.
1379 by alx on 2017-12-01 17:34:00
В rpt_params_t добавлено поле amrflags. Инициализируется нулями.
1378 by alx on 2017-12-01 14:56:35
Исправлена ошибка: RTP потоки не посылали новый rtp_params_t
при изменении скорости AMR.
1377 by alx on 2017-12-01 13:54:14
Исправлена ошибка: потоки RTP применяли параметры bundling и interleave
не только к кодекам EVRC/EVRCB, что приводило к неверным значениям ptime
и ошибкам при активации потока.
1376 by alx on 2017-12-01 13:52:23
Скорректирован максимальный размер пакета для GSM-HR: 20 мс.
При значениях больше 20 мс происходит MSP ALERT.
1375 by alx on 2017-12-01 12:22:19
Потокам RTP добавлены конфигурационные параметры bundling и interleave,
используемые кодеками EVRC/EVRCB. Параметры хранятся во флагах канала
и занимают биты 16...23.
1374 by alx on 2017-12-01 12:20:46
При отправке VCEOPT добавлена проверка на выход ptime за допустимые пределы
(точнее, на превышение 240 мс), что может быть при использовании кодеков
EVRC/EVRCB. Хоть в документации и написано, что для этих кодеков поле ptime
игнорируется, на практике MSP возвращал ошибку. Теперь для ptime > 240
в поле ptime пишется 20.
1373 by alx on 2017-12-01 09:43:15
При наличии кодеков EVRC/EVRCB в SDP передается maxptime и maxinterleave.
В rpt_params_t добавлено поле maxinterleave.
Полученное в SDP значение maxinterleave используется как interleave при передаче.
1372 by alx on 2017-11-30 16:30:24
Значением ptime по умолчанию сделано -1. Желаемое значение ptime кодируется
в виде псевдо-payload в строке codecs. При обмене сообщениями SDP мы
передаем и принимаем атрибут ptime. Если от удаленной стороны принят ptime,
мы принимаем принятое значение. Если ни мы, ни удаленная сторона не предложили
ptime, используется legacy вариант - ptime из флагов канала.
1371 by alx on 2017-11-29 19:18:50
В rtp_event_t теперь запоминаются значения атрибутов ptime и maxptime,
полученные в SDP от удаленной стороны.
1370 by alx on 2017-11-29 12:35:34
При недопустимой комбинации параметров dtxmin и dtxmax (dtxmin > dtxmax)
применяются значения по умолчанию (12 и 32 соответственно).
1369 by alx on 2017-11-29 12:32:14
Добавлены кодеки EVRC и EVRCB.
1368 by alx on 2017-11-29 11:48:21
Сделана поддержка атрибута hangover кодеков EVRC*.
1367 by alx on 2017-11-29 11:20:20
Учитываются атрибуты dtxmin и dtxmax кодеков EVRC*.
1366 by alx on 2017-11-29 09:59:06
Переделаны парсинг и генерация атрибута fmtp в SDP c учетом того,
что fmtp может содержать много разных атрибутов и может присутсововать
в SDP только один раз для одного формата.
1365 by alx on 2017-11-28 17:59:49
В SDP сделана поддержка silencesupp.
1364 by alx on 2017-11-28 17:07:44
Сделано включение/выключение DTX для кодеков EVRC*.
Исправлено сломанное VBD: вызывался setPayloadType() без последующего send_PTMNG().
1363 by alx on 2017-11-28 16:27:27
Добавлена поддержка кодеков G729E, EVRC0, EVRCB0.
G729E почему-то не работает.
1362 by alx on 2017-11-24 19:03:52
В параметре 5 VCEOPT установлен бит 14 - кодек GSM-HR-08
переведен в формат, соответствующий RFC:5993.
1361 by alx on 2017-11-24 18:51:15
Добавлена поддержка кодека GSM-HR-08.
1360 by alx on 2017-11-24 17:58:19
Кодек AMR теперь используется в варианте BWE (не octet-aligned).
Добавлены флаги, устанавливающие скорость кодирования AMR.
1359 by alx on 2017-11-23 19:01:05
Добавлена поддержка кодека AMR.
1358 by alx on 2017-11-23 18:58:45
В параметрах VOPENA включен режим GSM-EFR (TS 101.318) вместо AMR.
1357 by alx on 2017-11-23 18:44:28
Устранены предупреждения компилятора о сравнении знакового с беззнаковым.
1356 by alx on 2017-11-23 12:31:29
Добавлена поддержка кодеков GSM, G.728, iLBC и GSM-EFR.
1355 by alx on 2017-11-23 10:49:49
Исправлена ошибка, приводившая к невозможности создать новое соединение
после использования кодеков G726. createConnection() завершалось с
ошибкой из-за того что в параметрах RTP оставался payload type от
предыдущего соединения, отсутствующий в дефолтной таблице PTMNG.
Теперь сделано следующее: таблица PTMNG хранится в памяти каждого
канала, и setPayloadType() только модифицирует эту таблицу. После
завершения модификаций с помощью setPayloadType() выполняется send_PTMNG(),
которая отправляет таблицу из памяти в MSP. See #161.
1354 by alx on 2017-11-22 11:49:29
При приеме вызова со стороны ISDN PRI голосовому каналу устанавливается
закон кодирования, указанный в Bearer Capability сообщения SETUP.
При исходящем вызова в направлении ISDN PRI голосовому каналу устанавливается
закон кодирования, заданный в настройках. Closes #226.
1353 by alx on 2017-11-22 11:42:17
Устранено ложное сообщение об ошибке, вызывавшеся попыткой устновить VCETOPT
для не-голосового канала (например для D-канала ISDN PRI).
1352 by alx on 2017-11-22 10:52:44
При отбое соединения PRI со стороны IP запускается таймер ожидания RELEASE.
Если в течение 10 секунд RELEASE не приходит, выполняется сброс канала.
Closes #146.
1351 by alx on 2017-11-22 10:22:14
Состояние Ringing канального окончания PRI переименовано в Proceeding.
Это точнее отражает суть процесса.
1350 by alx on 2017-11-22 10:10:49
Исправлена ошибка: не уничтожались соединения с типом отличным от VoIP.
1349 by alx on 2017-11-21 19:14:14
Устранено ложное сообщение об ошибке, возникавшее в результате попытки
вернуть код 404 несуществующему вызову -1 при уничтожении канального
окончания АДАСЭ (его класс содержит событие call_event_t).
1348 by alx on 2017-11-20 14:49:00
Фокус конференции теперь соглашается на шифрование RTP если оно предложено входящим INVITE.
1347 by alx on 2017-11-20 13:44:31
В классе ConferenceParticipant перегружен метод createConnection().
Теперь он (пере)создает участника конференции (раньше при попытке
пересоздать соединение в setRTPparams() для участника конференции
возникала ошибка). Участнику конференции разрешено использование
SRTP. Соединения, передаваемые в конференцию методом "REFER конференции"
используют SRTP.
1346 by alx on 2017-11-20 13:39:26
При создании участника конференции для него сразу выполняется send_PTMNG(),
sendVCEOPT() и настройка криптографии (если требуется SRTP).
1345 by alx on 2017-11-20 13:37:18
Убрано ненужное предупреждение об изменении набора кодеков при посылке INVITE в ua_refer_to().
1344 by alx on 2017-11-13 17:23:12
Исправлена ошибка: неизменившийся MAC адрес внешнего хоста IPv6
воспринимался как ошибка получения MAC адреса, что приводило к
ложной индикации аварии "Remote host down" и массе ненужных
запросов NDP. Closes #255.
1343 by alx on 2017-11-13 16:36:43
Исправлена ошибка: send_ndp_req() отправляла запросы NDP с неверным
мультикастовым адресом ethernet. Closes #256.
1342 by alx on 2017-11-13 16:02:34
При чтении файла /proc/net/if_inet6 пропускаются адреса с флагом IFA_F_DEPRECATED.
Помогает в случаях, когда маршрутизатор анонсирует префиксы с нулевым временем жизни.
See #256.
1339 by alx on 2017-11-09 17:48:11
Увеличена длина хвоста эхоподавителя.
1338 by alx on 2017-11-08 15:03:56
Предыдущий коммит внес ошибку: ранее после выполнения hangup()
канальное окончание получало eDisconnectEvent и по нему переходило
в исходное. Но hangup() очищает идентификатор активного соединения,
поэтому добавленная предыдущим коммитом проверка не пропускала
eDisconnectEvent, в результате при отбое соединения по сигналу
"Занято" канальное окончание не переходило в исходное. Теперь
в канальное окончание FXO добавлен собственный обработчик hangup(),
переводящий окончание в исходное состояние.
1337 by alx on 2017-11-08 09:59:55
Исправлена ошибка: канальные окончания FXO, SS7, PRI и R1.5 не проверяли
идентификатор соединения при получении сообщения eDisconnectEvent, в результате
чего после трансфера соединения сообщение об отбое старого соединения
могло быть воспринято как отбой текущего, что приводило к одностороннему
переходу канального окончания в исходное состояние. Closes #254.
1336 by alx on 2017-10-27 12:16:25
При поступлении канальному окончанию АДАСЭ приоритетного вызова
перед разрывом существующего соединения в направлении сети IP
воспроизводится голосовая фраза misc-your_call_has_been_terminated.raw.
1335 by alx on 2017-10-26 11:02:39
Сделано обновление в CDR параметров вызывающего абонента при получении ответа
на вызов с заголовками P-Asserted-Identity или P-Preferred-Identity. Closes #253.
1334 by alx on 2017-10-24 10:41:36
Предприняты меры чтобы набор номера DTMF не приводил к ложному набору
импульсами из-за того что в некоторых цифрах DTMF присутствует 1200 Гц.
1333 by alx on 2017-10-24 09:36:04
Канальным окончаниям АДАСЭ добавлен конфигурационный флаг, разрешающий
принимать из канала TDM набор номера DTMF.
1332 by alx on 2017-10-23 19:11:03
Исправлена ошибка: конфигурационный флаг потоков RTP enableCAS инициализировался true,
в то время как значением по умолчанию signalingMode был 0. Как результат, если поток
RTP создавался с включенным enableCAS, то setSignalingMode() не выполнялось (так как
enableCAS не изменился), signalingMode оставался 0, и СУВ'ы не работали. Теперь
enableCAS инициализируется значением false. Сломано было в r1292.
1331 by alx on 2017-10-23 18:54:27
Если соединение не создано в MSP, isSRTPEnabled() возвращает false.
Раньше это не проверялось, что приводило к сообщению об ошибке в логе.
1330 by alx on 2017-10-23 11:00:01
Канальным окончаниям АДАСЭ добавлена проверка приоритетности вызова для случая
вызова с параметром line (когда канального окончание регистрируется на внешнем сервере).
1328 by alx on 2017-10-20 11:01:36
Исправлена ошибка: если в параметре "Горячая линия 1600 Гц" канального окончания АДАСЭ
указывалось имя пользователя с доменом, то при получении вызова со стороны IP имя
вызывающего сравнивалось с полным значением параметра (то есть именем и доменом).
Теперь при установке значения параметра из него выделяется только имя, которое
запоминается в отдельной переменной hotline_1600_user и используется в сравнении
вместо hotline_1600.
1327 by alx on 2017-10-10 13:42:00
После получения уведомления об окончании трансфера, если канальное окончание FXS
находится в состоянии Idle, оно деактивируется на случай, если канал был еще активен.
Closes #211.
1326 by alx on 2017-10-09 18:56:30
Канальное окончание АДАСЭ теперь поддерживает указание домена в
конфигурационных параметрах "Горячая линия". Closes #250.
1325 by alx on 2017-10-04 15:28:58
Исправлена ошибка: в режиме буферизации медиапотока "Preset 2" минимальный
размер буфера был вне допустимого диапазона (больше максимального).
1324 by alx on 2017-10-04 10:43:58
Канальному окончанию АДАСЭ добавлен конфигурационный параметр запрета
приоритетности вызова от диспетчера.
1323 by alx on 2017-10-03 13:49:23
Исправлена ошибка: запрос регистрации канальных окончаний шлюза
отправлялся через транспорт UDP независимо от установки транспорта
в конфигурации окончания.
1322 by alx on 2017-10-03 10:58:57
Функция ua_answer() теперь является частным случаем ua_response_status().
Closes #246.
1321 by alx on 2017-09-29 14:47:24
Исправлена ошибка: в случае таймаута ожидания ответа на вызов со стороны IP
канальное окончание АДАСЭ освобождало канал, но не давало ответ вызывающему.
1320 by alx on 2017-09-28 18:00:58
Канальному окончанию АДАСЭ добавлена функция "Приоритет диспетчера":
при получении вызова от абонента, номер которого совпадает с значением
параметра "Горячая линия" при занятии 1600 Гц (то есть диспетчера),
текущее соединение разрывается, и устанавливается новое.
1319 by alx on 2017-09-26 18:41:28
Убран неиспользуемый параметр isfocus функции ua_answer(). See #246.
1318 by alx on 2017-09-26 16:31:39
Исправлена ошибка: при установке конференции на холд (a=inactive)
делалась попытка пересоздать канал методом createConnection(),
который неприменим в случае участника конференции. Теперь при
постановке конференции на холд участнику просто отключается RTP
поток вызовом stopRTP().
1317 by alx on 2017-09-26 13:52:35
Окончание FXS корректирует домен в URI фокуса конференции с учетом того,
что в URI могут содержаться параметры. Предыдущий коммит сломал эту коррекцию.
1316 by alx on 2017-09-26 13:39:30
При создании конференции генерируется случайная последовательность символов,
которая добавляется в сонтакт фокуса конференции в виде параметра x-id.
При получении фокусом конференции запросов INVITE или REFER выполняется
проверка наличия такого параметра в запрашиваемом URI, и если его нет,
запрос отклоняется. Благодаря этому к конференции могут обращаться только
те, кто знает x-id, а "посторонние" войти в нее не могут. Closes #236.
1315 by alx on 2017-09-26 12:32:08
В событие refer_event_t добавлены параметры запрашиваемого URI.
1314 by alx on 2017-09-26 11:35:42
Добавлена функция ua_refer_bad(), отправляющая завершающее уведомление
о неудачном трансфере. Будет использоваться фокусом конференции для
проверки прав добавления участника при получении REFER.
1313 by alx on 2017-09-26 11:05:12
В событие call_event_t добавлены все параметры вызываемого URI.
1312 by alx on 2017-09-25 16:41:27
Функции Base64Encode() и Base64Decode() перенесены из модуля user_agent
в модуль utils.
1311 by alx on 2017-09-25 16:32:39
Изменен алгоритм тарнсфера. Теперь при вызове канальным окончанием ua_refer_to()
формируется сообщение INVITE, затем отправляется NOTIFY c "100 Trying", а
сообщение INVITE не отправляется, а сохраняется в CallData (вместе с номером TS).
При получении любого ответа на NOTIFY (включая 1xx), если в CallData есть
сохраненный INVITE, он отправляется в сеть, а канальному окончанию передается
событие eCallReplace с указанием нового идентификатора вызова. Таким образом
устраняется ситуация, когда ответ на INVITE и следующая за ним попытка отправки
финального NOTIFY происходит до того, как получен ответ на первый NOTIFY.
See #206.

В окончаниях FXS отбой после завершения трансфера выполняется только если был
установлен флаг hangup_after_refer. Он устанавливается, если выполняется
"простой" трансфер, но не трансфер в конференцию.

1310 by alx on 2017-09-25 12:08:56
Перед удалением участника конференции он деактивируется - посылается VOPENA
с параметром 1 равным нулю.
1309 by alx on 2017-09-18 15:07:43
При ответе на предложение SDP сохраняется количество и порядок следования
медиапотоков, перечисленных в предложении, как того требует RFC3264.
See #241.
1308 by alx on 2017-09-18 11:14:10
В ответе на предложение SDP указывается время сессии, указанное в предложении
(требование RFC3264). See #241.
1307 by alx on 2017-09-15 19:01:31
При обработке ответов на предложения SDP проверяется, не запрещен ли медиапоток
указанием нуля в качестве номера порта.
1306 by alx on 2017-09-15 18:40:27
Если канальному окончанию разрешены и RTP, и SRTP, то в предложении
SDP формируем описания двух медиапотоков: RTP/SAVP и RTP/AVP.
Отвечая на предложение SDP, если запрещено использование SRTP, и в
предложении есть медиапоток RTP/AVP, используется RTP/AVP (RTP/SAVP
в этом случае игнорируется). Если же в предложении был только RTP/SAVP,
то используем в ответе его, но не генерируем ключи (нет атрибута crypto),
как и было раньше.
1305 by alx on 2017-09-15 15:48:47
После завершения трансфера оба из потенциально имеющихся соединения разрываются.
Closes #240.
1304 by alx on 2017-09-15 13:22:07
При получении канальными окончаниями события eCallRinging в состоянии
уже установленного соединения и при отсутствии медиапотока (окончание
поставлено на холд) в TDM-канал передается сигнал КПВ. Closes #237.
1303 by alx on 2017-09-15 12:19:01
При получении окончанием FXS окончательного NOTIFY о трансфере
выполняется отбой "старого" соединения.
Здесь же при получении NOTIFY о ходе трансфера в конференцию
добавлена проверка, что это NOTIFY на REFER.
1302 by alx on 2017-09-14 18:15:01
Классам DVOAnnounce183 и DVOAnnounce добавлена пауза 800 мс беред отбоем.
Это помогает в случаях, когда некоторые телефоны "глотают" окончание
воспроизводимой фразы.
1301 by alx on 2017-09-14 12:18:49
Окончаниям FXO добавлен конфигурационный параметр "Игнорировать наличие гудка".
При установке этого флага при занятии телефонной линии начинает набирать
номер после таймаута "Таймаут гудка" независимо от того был в линии dialtone
или нет. Эта функция может использоваться на линиях с нестандартным dialtone.
1300 by alx on 2017-09-14 11:49:32
Вставка 'p' после префикса межгорода в набираемый окончаниями FXO
в телефонную линию номер выполняется сразу после принятия решения
о приеме вызова со стороны IP. Этим мы подготавливаем и упрощаем
последующие нововведения по детектированию (или не детектированию)
дайлтона.
1299 by alx on 2017-09-14 11:43:24
Небольшое улучшение: при приеме вызова со стороны IP окончания FXO
сначала замыкали шлейф линии, а потом проверяли наличие поддерживаемого
кодека в предложенных удаленной стороной. Как результат, если вызов
отклонялся по причине отсутствия поддерживаемого кодека, в телефонной линии
происходило кратковременное замыкание шлейфа (по идее, безвредное, но лишнее).
Теперь шлейф замыкается после проверки наличия поддерживаемого кодека.
1298 by alx on 2017-09-14 11:18:13
Исправлено сломанное в r1292 определение Call Progress окончаниями FXO.
1297 by alx on 2017-09-13 18:32:29
Исправлена ошибка: после настройки кодеков в setRTPparams() не отправлялась
команда VOPENA, в результате чего RTP передавался с кодеком PCMU (значение
по умолчанию, с которым создается канал). Теперь после настройки параметров
соединения повторно отправляется VOPENA уже с верным PayloadType.
1296 by alx on 2017-09-12 18:52:17
Исправлена ошибка, сделанная в r1293: не вызывалась setConnIpMode(),
если канал был создан до выполнения setRTPparams(), setConnIpMode()
ранее вызвана не была.
1295 by alx on 2017-09-12 18:48:38
Сделан перевод кодов функций и кодов ошибок в текстовый вид.
Когда MSP возвращает ошибку, в лог выводится полный текст.
Доработан отладочный дамп команд, передаваемых определенному
каналу (теперь выводит имя функции).
1293 by alx on 2017-09-12 11:41:43
Если соединение существует, и семейство адресов не изменялось, setConnIpMode()
повторно не выполняется. Таким образом, мы буквально следуем указанию из
документации: "It can only be issued once during the lifetime of a channel".
1292 by alx on 2017-09-12 11:34:30
Merged branch/ticket-229: устранены падения, вызванные изменением
семейства адресов медиапотока (See #229), улучшены переходы в режим
T.38 и обратно, переход из T.38 в режим голоса теперь выполняется
не сразу после получения сообщения DCN, а после таймаута, чтобы
дать удаленному шлюзу время на передачу DCN.
1291 by alx on 2017-08-29 13:36:15
Канальным окончаниям PPS добавлен флаг, при установке которого канальное окончание передает в канал
команду отключения регенераторов при отбое соединения со стороны сети IP. Closes #231.
1290 by alx on 2017-08-16 11:24:55

stopTone() проверяет, создан ли канал, и если нет, возвращает успешный код завершения,
ничего не делая. Это устраняет сообщения об ошибке в лог-файл типа:

sip_ua[363]: comcerto.cpp:3129: ts 17: PassThru(): invalid channelId (-1)
sip_ua[363]: comcerto.cpp:5277: ts 17: stopTone() failed (result=-1)
sip_ua[363]: fxs.cpp:987: ts 17: stopTone() failed

1289 by alx on 2017-08-15 13:41:15
Merged adase branch: добавлена поддержка канального окончания АДАСЭ.
1276 by alx on 2017-08-11 10:46:32
В окончании PPS убрана неиспользуемая переменная.
1258 by alx on 2017-06-22 10:58:43
Если у канального окончания FXO звонки в линии прекращаются до поднятия трубки,
очищаем номер Caller-ID (ранее номер вызывавшего так и оставался в отображаемом состоянии).
Также номер очищается при неудачном вызове ua_dial_out().
1257 by alx on 2017-06-21 18:54:17
Уменьшена строгость детектирования начала посылки Caller-ID окончаниями FXO:
уменьшена минимально н6еобходимая длина последовательности занятия (101010...)
и последующих единиц. Это позволяет более надежно распознавать посылки Caller-ID
различных АТС.

Параметры приема Caller-ID теперь устанавливаются при каждом включении приема,
а не один раз в конструкторе канала как раньше.

1256 by alx on 2017-06-21 18:49:09
Канальным окончаниям SIP добавлен конфигурационный параметр cid-replace,
позволяющий матчить приходящий со стороны TDM номер вызывающего абонента
с регулярным выражением и выполнять подстановку. Closes #222.
1255 by alx on 2017-06-20 13:57:25
Убран ненужный #include
1254 by alx on 2017-06-15 18:33:17
При формировании URI вызываемого имя домена берется из строки hostname,
а не как раньше - все что после '@' в URI канального окончания. Closes #209.
1250 by alx on 2017-06-15 12:42:30
Всем канальным окончаниям SIP добавлен конфигурационный параметр rtp-timeout.
При ненулевом значении параметра мониторится поток RTP. При отсутствии потока
RTP более заданного параметром количества секунд выполняется отбой соединения.
Closes #228.
1243 by alx on 2017-06-13 18:06:21
Окончаниям PRI добавлен конфигурационный флаг, разрешающий принимать вызовы
с Bearer Capability "3.1k audio" дополнительно к Bearer Capability "Speech".
Closes #227.
1242 by alx on 2017-06-13 16:15:41
Устранена проблема: при отклонении входящего вызова со стороны PRI канальное окончание
вызывало pri_hangup(), но этот вызов не приводил к отправке DISCONNECT, если перед этим
не было вызова pri_proceeding().

Причины отбоя приведены в большее соответствие действительности: например при получении
запроса Transport Capability отличного от Speech даем отбой PRI_CAUSE_BEARERCAPABILITY_NOTIMPL,
а не PRI_CAUSE_DESTINATION_OUT_OF_ORDER, как было раньше. Closes #225.

1238 by alx on 2017-06-08 18:51:49
При старте sip_ua, перед активацией WDT, производится контроль времени CPU Idle.
Процесс ожидает, пока время CPU Idle не станет больше 90% (но не более ~1.5 мин).
Это связано с тем, что сразу после старта платы ядерный процесс jffs2_gcd_mtd2
в фоновом режиме сканирует файловую систему jffs2, что отъедает практически
100% CPU и приводит к непредсказуемым задержкам выполнения основной программы
(особенно при обращении к файловой системе), которые могут приводить к срабатыванию
WDT и перезагрузке платы. Особенно эффект проявляется после записи в ПЗУ больших файлов.
Предпринятая мера позволяет дождаться окончания процесса начального сканирования FS
прежде чем приступить к основной работе.
1169 by alx on 2017-05-18 16:59:05
Добавлена поддержка канальных окончаний PPS (рестрансляторы ППС-Р3).
1168 by alx on 2017-04-25 16:41:49
Разрешили прием запросов REGISTER с Content-Type: multipart/mixed
(некоторые телефоны cisco передают такой запрос). Ранее плата
отказывалаь принимать такой запрос, отвечая кодом 415.
1166 by alx on 2017-04-11 10:03:04
При отслеживании вызовов в предответном состоянии используется AOR без номера порта,
только имя пользователя и имя хоста. При перехвате вызова добавлена проверка наличия
to_tag (то есть что диалог установлен).
1165 by alx on 2017-04-11 09:57:55
При получении входящего вызова в качяестве URI вызывающего событию передается только
имя пользователя и хост, без номера порта (так как позже этот URI может использоваться
для получения пользователем ДВО, например перехвата вызова).
1164 by alx on 2017-04-05 18:29:01
Убран отладочный вывод в DialogTracker::process().
1163 by alx on 2017-03-29 09:25:11
Наш демон больше не отсоединяется от терминала. Демонизириет его теперь стартовый скрипт.
1162 by alx on 2017-03-28 19:16:29
При замещении одного вызова другим (при получении INVITE с Replaces) поле endpointType
дескриптора соединения наследуется от замещаемого дескриптора соединения. Благодаря этому
в ответ ном сообщении "200 OK" присутствует X-Endpoint-Type, который попадает в CDR.
Closes #218.
1161 by alx on 2017-03-28 19:00:20
Убраны предупреждения компилятора.
1160 by alx on 2017-03-28 15:21:34
Merged /branches/new-intercept
1159 by alx on 2017-03-28 14:57:57
Сборка проекта теперь не зависит от компилятора, версии библиотеки и архитектуры.
Требуется чтобы в родительском каталоке были симлинки на target-arm_* и toolchain-arm_*.
1144 by alx on 2017-03-24 10:18:44
Убраны несипользуемые переменные.
1141 by alx on 2017-03-22 12:22:39
Добавлен макрос REPRO_VERSION, на его основе мы можем собираться с разными версиями repro.
1136 by alx on 2017-03-19 11:36:52
Метод getc() заменен на getChar() для устранения возможных интерференций со стандартным макросом.
1135 by alx on 2017-03-19 11:35:53
Доюавлено подключение <stdint.h> (для сборки новыми uclibc/gcc).
1134 by alx on 2017-03-15 16:53:02
Исправлена работа конфигурационных параметров proxy и registrar:
теперь они учитываются при отправке REGISTER и начального INVITE в ua_dial_out().
1133 by alx on 2017-03-13 19:00:30
Реализована загрузка таблицы маршрутизации.
1132 by alx on 2017-03-02 10:12:13
Убрали DEBUG при сборке.
1130 by alx on 2017-03-01 18:06:52
Таблица алиасов имен кодеков пополнена разными нестандартными вариантами,
которые могут встретиться в природе. Теперь мы к этому готовы.
1129 by alx on 2017-03-01 17:47:34
Добавлена таблица синонимов (alias'ов) имен кодеков для лучшей поддержки UA,
которые указывают нестандартные названия кодеков в SDP. На данный момент
в таблице алиасов одна запись: "G729a" --> "G729" (встречается в UA от Cisco/Linksys).
1128 by alx on 2017-03-01 17:25:28
Исправлена ошибка: при анализе SDP кодек, в атрибуте rtpmap которого явно указаны encoding-parameters,
считался неподдерживаемым, даже если указывалось дефолное значение (/1). Теперь принимается любая из
двух форм: "/8000" и "/8000/1".
1127 by alx on 2017-02-20 10:44:50
Убран ненужный вывод в лог (остатки отладки аккаунтинга).
1124 by alx on 2017-02-02 17:28:47
Устранена утечка памяти, вызывавшаяся получением запросов SUBSCRIBE, на которые мы не формировали
ответов. В результате копились незавершенные транзакции. Теперь прокси на все запросы SUBSCRIBE
дает ответ 405.
В user_agent также сделана обработка события EXOSIP_IN_SUBSCRIPTION_NEW, в данный момент не
имеющая эффекта из-за блокировки SUBSCRIBE в прокси-сервере.
1123 by alx on 2017-01-31 10:44:02
Добавлены проверки на инициализацию std::string значением NULL.
1122 by alx on 2017-01-31 10:43:14
Таймаут watchdog-таймера устанавливается в максимальное значение - 32 секунды.
Добавлено try-catch для ловли возможных исключений.
1121 by alx on 2017-01-31 10:41:42
Исправлена ошибка, проявлявшаяся падением в случае получения в SDP невалидного IP адреса
(было обнаружено когда было указано семейство IP6 и при этом адрес IPv4).
1120 by alx on 2016-12-08 16:40:51
Исправлена ошибка: если канальное окончание ставили на HOLD, а затем отбивали,
то ему в линию не передавался сигнал "Занято". Это было связано с тем, что
находящемуся на холде канальному окончанию в линию проигрывается музыка, а в
таком состоянии startTone() не действует (сразу приходит событие ToneComplete).
Теперь startTone() вызывает stopPlayingFile(), и stopRTP() тоже (на всякий случай).
1119 by alx on 2016-12-08 16:36:01
Получение ответа 422 на исходящий INVITE игнорируем нашим юзер-агентом, так как libeXosip автоматически
выполняет повторный INVITE.
1118 by alx on 2016-12-08 16:24:15
Исправлен баг: при получении входящего вызова в данных вызова устанавливается признак
needsAnswer, указывающий, что вызов ожидает ответа. Этот признак сбрасывается при ответе.
Однако, если вызов был снят до его ответа, needsAnswer так и оставался установленным.
В результате этого последующий исходящий вызов мог сохранять установленный needsAnswer,
что создавало проблемы если вызов перевести на холд и затем положить трубку:
начинал звенеть звонок, а при последующем ответе возникала ошибка, так как вызов не входящий.
1117 by alx on 2016-11-30 18:05:15
Merge from 'new-accounting' branch.
1113 by alx on 2016-11-29 17:46:40
Добавлена серия try {} catch() {} для ловли исключений.
1112 by alx on 2016-11-29 11:16:42
Добавлен прием и генерация P-Asserted-Identity. При переводах вызовов корректно меняется
информация о вызывающем и вызываемом в CallData.
1111 by alx on 2016-11-23 17:09:17
Изменен алгоритм установки заголовка X-Secure-Transport с учетом того, что запрос
может несколько раз пройти через наш прокси. Fixes #212.
1110 by alx on 2016-11-23 12:20:42
Выбранный crypto_suit и ключ теперь запоминается в данных вызова. При REINVITE и при
ответах на предложение SDP той же сессии используется уже имеющийся ключ.
В setRTPparams() добавлена проверка на изменение параметров шифрования, и если они
не менялись, то вызов srtp_setup() не производится. Closes #193,#199.
1109 by alx on 2016-11-22 16:33:26
Изменили параметры определения неиспользуемого нами сигнала "Unabtainable".
Предполагается что уменьшили вероятность его детектирования в процессе разговора.
1108 by alx on 2016-11-22 16:31:37
Исправлена ошибка, приводившая к падению при получении REFER: заголовок Refer-To имеет право
быть как в формате Name-Addr, так и в формате URI, в то время как у нас предполагался только
формат URI. В результате парсинга Name-Addr как URI получались NULL указатели в полях
username и host. Теперь значение заголовка Refer-To парсится как Name-Addr и проверяется
наличие всех необходимых полей. Fixes #208.
1107 by alx on 2016-11-22 12:38:35
При нажатии Flash в предответном состоянии текущего соединения текущее соединение отбивается.
1106 by alx on 2016-11-22 12:06:59
Изменен процесс создания конференции методом "REFER конференции": теперь трансфре второго
соединения в конференцию выполняется не после получения ответа 202 на первый REFER, а после
получения завершающего NOTIFY (т.е. после полного окончания процесса трансфера). Closes #206.
1105 by alx on 2016-11-17 17:38:44
Длительность размыкания шлейфа, воспринимаемая как Flash, теперь настраивается. Closes #196.
1104 by alx on 2016-11-17 14:28:50
В окончании FXO добавлен параметр "busyDisc", определяющий количество циклов
сигнала "Занято" подряд, после которых выполняется отбой. Значение 0 полностью
отключает отбой по сигналу "Занято". Флаг flagDisableBusyDisc убран.
1103 by alx on 2016-11-17 12:50:41
  • Улучшено детектирование сигнала "Занято": установлены границы длительности сигнала и паузы от 290 до 500 мс.
  • Улучшена генерация сигнала "Занято": длительности посылки и паузы сделаны по 350 мс (было 500 мс).
1102 by alx on 2016-11-16 17:11:52
В ua_reinvite() теперь в отправляемое сообщение INVITE добавляются заголовки
X-Endpoint-Type и Session-Expires (если сконфигурирован таймаут в канальном окончании).
1101 by alx on 2016-11-16 17:01:19
  • Вместо автоматического REINVITE при получении REFER в соединении теперь канальному окончанию

отправляется событие eReferEvent, при обработке которого выполняется ua_refer_to(). Closes #137.

  • В сообытие eReferEvent добавлены поля refer_to_user и refer_to_uri, благодаря чему

получателю REFER не требуется отдельное событие eCallReplace, и изменение параметров соединения
теперь синхронизировано с отправкой REINVITE.

  • Участникам конференции включены Session-Timer'ы со значением 1800 (пока не настраивается).
  • При отправке REINVITE в процессе CallTransfer устанавливаются поля X-Endpoint-Type и Session-Expires.
1100 by alx on 2016-11-15 15:25:27
В окончаниях FXS вместо флага eNeedAnswer используется поле needsAnswer.
1099 by alx on 2016-11-15 15:10:27
Устранена ситуация, при которой при снятии трубки окончание FXS пыталось ответить
на уже отвеченное соединение, в результате чего получало ошибку. Closes #204.
Однако, здесь остается возможность неверного поведения из-за того что
INVITE посылается сразу при получении REFER в одном потоке, а событие eCallReplace
обрабатывается в другом. Необходима реализация #137.
1098 by alx on 2016-11-14 14:46:45
При получении ответа "200 OK" на запрос UPDATE для соединения, о котором канальное окончание
ничего не знает, соединение разрывается (на случай "потерянных" соединений).
1097 by alx on 2016-11-10 15:41:02
В канальных окончаниях FXO сделан конфигурационный флаг, запрещающий выполнять отбой
при детектировании в канале сигнала "Занято". Это помогает избавиться от разрывов
соединений, вызванных ложным детектированием сигнала "Занято".
1096 by alx on 2016-11-09 17:16:24
Сделана поддержка Session Timer (RFC4028).
Канальным окончаниям SIP добавлен параметр "se", устанавливающий значение Session-Expires.
По умолчанию "se" равен нулю, что означает не использовать Session Timer.
1095 by alx on 2016-10-14 12:23:22
Техническая правка: в ComcertoChannel::PassThru() вместо указателя на структуру SMsg
теперь передается указатель на сообщение и длина сообщения.
1094 by alx on 2016-10-14 11:21:16
В comcerto.cpp изменили синхронный вариант DEV_PassThru(): вместо
указателя на структуру SMsg ей теперь передается указатель на команду и длина команды.
1093 by alx on 2016-10-14 10:08:54
Техническая проавка: из деклараций убраны IN и OUT,
U8, U16 и U32 заменены на uint8_t, uint16_t и uint32_t соответственно.
1092 by alx on 2016-10-13 18:44:13
Исправлена ошибка: если на момент загрузки и старта платы у окончания FXS уже замкнут
шлейф, то окончание оставалось в состоянии Idle. Если на такое окончание поступал вызов,
то сразу происходил ответ. Теперь при создании окончания FXS проверяется состояние СУВ A,
и если он равен нулю, канал активируется (переходит в стостояние Dialtone).
1091 by alx on 2016-10-13 16:33:29
Вычисление нагрузки на MSP теперь вычисляется на основании
1090 by alx on 2016-10-13 15:40:52
Исправлена ошибки, связанные с формированием SDP:

  • В ответе на предложение T38 строка connection присутствовала дважды (глобально и в media).
  • В предложении SDP T38 connection была в секции media. Теперь глобальная.

При формировании REINVITE предложение SDP теперь всегда генерируется
внутри build_sdp().

1089 by alx on 2016-10-13 14:15:02
Устранена проблема с одной из прошивок MSP: при попытке уничтожить только что созхданный
канал T.38 возвращалась ошибка. Помогло добавить задержку перед уничтожением.
1088 by alx on 2016-10-12 18:49:57
Сделана обработка изменения СУВов (точнее, СУВ A) в режиме T38.
Теперь изменение СУВ A из 0 в 1 сразу приводит к отбою.
1087 by alx on 2016-10-12 11:01:48
Исправлена ошибка, в результате которой локальный адрес полупостоянных RTP потоков
не обновлялся при смене адреса платы (ошибочно использовался двойной указатель).
1086 by alx on 2016-10-11 11:08:14
Исправлена небольшая ошибка: если окончание R2 принимало прямой вызов
(когда запрошенный URI имеет параметр line), вызов принимался, выполнялось занятие
соединительной линии, по после подтверждения занятия возникала ошибка при передаче
первой цияры номера, так как вызываемый номер пуст, в результате вызов заканчивался
ответом "603 Declined". Теперь в описанной ситуации занятия канала не происходит,
вместо этого сразы выдается ответ "486 Busy here".
1085 by alx on 2016-10-10 18:51:43
Исправлена ошибка: если полупостоянные потоки RTP инициализировались до получения
платой IP адреса (при использовании DHCP), то они переходили в состояние "Error".
После же получения платой адреса потоки так и оставались в состоянии "Error", так
как событие eIPChanged не обрабатывалось. Теперь при получении eIPChanged проверяется,
совпадает ли протокол, адрес которого изменился, с протоколом, который должен использовать
поток, и если да, то локальный адрес в настройках RTP обновляется и делается повторный
вызов setRTPparams().
1084 by alx on 2016-10-07 17:19:25
Устранена ошибка, приводившая к отсутствию слышимости и даже перезагрузкам платы
после смены адреса IPv6. При старте в MSP больше не передается команда IP_ADDRESS_V6,
так как она переводит MSP в режим одного общего адреса, который затем нельзя изменить.
Вместо этого при старте передается IP_OPTIONS с установленным битом 4 параметра 1,
который включает режим неограниченного количества адресов.
Кроме этого, перед отправкой в MSP SET_ETH_HDR_CHAN вызывается del_eth_hdr_chan(),
разрегистрирующая все ранее зарегистрированные для канала протоколы.
Closes #192.
1083 by alx on 2016-10-06 19:11:21
Исправлена ошибка: cas() не устанавливала СУВ'ы если считала, что заданная комбинация
уже установлена. Это нарушало связь при пересоздании канала, например из-за установки
SRTP. Теперь cas() всегда передает заданную комбинацию в MSP.
1082 by alx on 2016-10-06 14:20:37
Исправлена ошибка фильтрации дребезга СУВ в окончаниях 1IND.
Ошибка проявлялась в виде перехода канального окончания в состояние RBlocked
после получения короткого (меньше 10 мс) "нуля" по СУВ A. Из блокировки канальное
окончание выходило при получении "нуля" длительностью более 10 мс.
1081 by alx on 2016-10-06 11:05:00
Добавлена новая конфигурация IPv6 - "2", которая означает,
что использование IPv6 полностью запрещено. При установке этого режима
с интерфейса eth0 удаляются все IPv6 адреса (включая link-local) и
вызывается comcerto_set_ip6() с параметром prefix-len = -1, что означает
запрет использования IPv6. В модуле user_agent в процессе формирования
предложения SDP и ответа на него добавлена проверка на запрет IPv6.
1080 by alx on 2016-10-05 16:35:33
В окончания R2 добавлен таймер на весь процесс установки соединения.
Если от момента занятия канала (СЛ) прошло 2 минуты, а соединение
еще не установлено, выполняется отбой.
1079 by alx on 2016-10-05 14:27:28
В окончаниях R2 сделан более корректный отбой по таймауту и ошибке приема номера.
1078 by alx on 2016-10-05 12:23:56
В окончаниях R2 при получении недопустимого кода цифры при приеме DNI выполняется перезапрос
предпоследней цифры. Если недопустимый код принят 10 более раз подряд, вызов отбивается.
Closes #191.
1077 by alx on 2016-10-05 11:46:29
В окончаниях R2 доабвлен параметр кода наличия эхоподавления (передается по запросу).
1076 by alx on 2016-10-05 11:34:31
В окончаниях R2 добавлен параметр кода nature of circuit (передается по запросу).
1075 by alx on 2016-10-05 10:10:24
В окончаниях R2 добавлена конфигурация и передача (по запросу) language code.
1074 by alx on 2016-10-04 19:19:42

В окончаниях R2:

  • При получении недопустимой цифры в ANI или DNI пропускаем ее и продолжаем запрашивать следующую цифру.
  • Сделана конфигурация и передача (по запросу) индикатора кода страны (Country code indicator).
1073 by alx on 2016-10-03 19:05:34
В окончаниях R2 добавлены отсутствовавшие перезапуски таймера.
Таймаут после передачи категории увеличен с 3 до 30 секунд
(удаленная сторона должна послать вызов).
1072 by alx on 2016-09-30 19:23:57

В окончаниях R2:

  • Введен флаг R2FlagsDontRequestANI, при установке которого не запрашивается ANI.
  • Линейный ответ считается успешным не только в состоянии Dialed, но и в состоянии Dialing (когда ответ пришел до завершения последнего ответного тона).
  • СУВы "замораживаются" на время выолнения setRTPparams().
  • Если сигнал категории кончился прежде чем мы на него ответили, выполняем hangup().
  • Введен флаг have_rtp. Если setRTPparams() вызывается до завершения выдачи окончательного ответного тона, то параметры запоминаются, и применяются только после окончания передачи ответного тона.
  • Введен флаг need_answer. ответ со стороны IP приходит до передачи завершающего ответного тона, то линейный код ответа в канал передается только после окончания передачи завершающего ответного тона. Для этого Введены новые состояния channelStateLastTone и channelStateCalling.
1071 by alx on 2016-09-30 12:33:17
В окончаниях R2 добавлен метод srtp_setup(). Теперь они корректно работают
в режиме SRTP.
1070 by alx on 2016-09-30 11:58:48
В окончаниях R2 сделан вывод в лог передаваемых и принимаемых сигналов.
Выводу событий понижен приоритет до DEBUG.
1069 by alx on 2016-09-30 11:35:41

В окончаниях R2:

  • Добавлена переменная abcd_in, содержащая принимаемые СУВ после фильтрации дребезга.
  • При получении eDisconnectEvent окончанием R2 выполняется проверка на входящее или исходящее соединение, а также на текущие передаваемые СУВ. Если занятие канала было входящим, и передаваемые СУВ не 11, то передаем ClearBack (11) вместо Idle(10). Также в этом случае в канал передается "Занято".
  • Добавлено отключение передачи сигналов в канал при переходе в состояние Idle.
1068 by alx on 2016-09-30 11:28:35
Добавлен вызов stopPlayingFile() при получении eDisconnectEvent.
1067 by alx on 2016-09-29 19:00:40
При выполнении hangup() отключаем проигрывание файла. Иначе, если hngup()
выполнялся, когда окончание проигрывало музыку, музыка могла так и продолжать
проигрываться в пустой канал, бесполезно расходуя ресурсы процессора.
Замечено было у окончаний R2, так как они не уничтожают канал после отбоя.
1066 by alx on 2016-09-29 16:51:30

В окончаниях R2:

  • Сигнал backSigSwitchToB переименован в backSigAddressComplete.
  • Добавлен старт таймера после выдачи импульса AddressComplete (A-3).
  • Если категория вызывающего не была получена на этапе приема ANI, используется категория, полученная после передачи AddressComplete.
  • После получения AddressComplete передаем категорию вызываемого абонента (было всегда 2).
1065 by alx on 2016-09-29 14:50:10
Канальным окончаниям R2 добавлен конфигурационный параметр "Категория по умолчанию".
Сделана корректная передача категории и номера вызывающего абонента.
1064 by alx on 2016-09-29 14:34:03
Исправлена ошибка: в окончаниях F2 при входящем (со стороны TDM) вызове
не устанавливалась группа сигнальных тонов.
1063 by alx on 2016-09-28 12:06:42
В окончаниях R2 исправлена ошибка, из-за кторой мог не передаваться RingBack.
Переделан прием ANI: теперь он принимается во временную переменную, и только
после окончания приема категория и номер присваиваются active_call.
1061 by alx on 2016-09-14 11:54:44
В процессе выполнения трансфера сделано "честное" уведомление о состоянии процесса:

  • при получении REFER отправляется NOTIFY с "100 Trying";
  • при получении успешного ответа на INVITE отправляется NOTIFY с "200 OK";
  • при неуспешном вызове отправляется NOTIFY с реальным кодом завершения вызова.

Добавлено новое событие call_notify_t (eCallNotify), которым канальные окончания
информируются о получении NOTIFY внутри диалога. call_notify_t содержит
событие, состояние подписки, content-type и тело уведомления.

В dvoIntercept соединение теперь разрывается после получения окончательного уведомления
о состоянии трансфера (независимо от кода завершения).

Closes #102.

1060 by alx on 2016-09-13 12:38:17
Добавлено событие call_ack_t, формируемое при получении SIP ACK.
В dvoIntercept REFER отправляется по факту получения ACK на отправленный ответ 200.
Closes #188.
1059 by alx on 2016-09-13 11:24:49
Добавлен прием глобильного параметра dvoInt с кодом вызова функции "Перехват вызова".
В функцию ua_refer() добавлен опциональный параметр-флаг early_only.
1058 by alx on 2016-09-13 11:22:30
В функции "Перехват вызова" сделана приоретизация вызовов по времени.
1057 by alx on 2016-09-13 10:19:56
Реализован перехват вызовов с настройкой групп перехвата.
1055 by alx on 2016-09-01 12:33:28
Реализована функция "групповой вызов" ("параллельный вызов"):

  • cделан прием списка групп вызова от платы SW-01;
  • при получении вызова группы вызов ветвится на всех членов группы;
  • для корректного форварда самим себе в список ACL теперь добавляется не только 127.0.0.1, но и все IP адреса платы. Также в ACL теперь не используется порт.

Closes #187.

1054 by alx on 2016-08-23 16:27:49
Добавлена "заготовка" функции перехвата вызовов (call intercept).
Пока закомментарена, но эксперименты успешны.
1053 by alx on 2016-08-19 17:31:06
Исправлены ошибки фильтрации дребезга СУВ.
Проявлялось как отбой в момент снятия трубки при входящем вызове
когда снятие трубки дает три переключения СУВ вместо одного.
Closes #185.
1052 by alx on 2016-08-05 16:20:30
Merged ipv6 branch.
1049 by alx on 2016-06-28 15:56:36
Исправлена ошибка формирования аварий "MF lost", приводившая к тому, что
эти аварии не очищались при отключении аварийного потока E1 или переводе
платы в режим канальной платы. Closes #165.
1048 by alx on 2016-06-28 15:25:24
Исправлена ошибка, приводившая к падению при получении невалидного SDP предложения:
сгенерированный SDP-ответ помещался в тело ответа до проверки if(media_pos < 0),
в результате, если мы не могли сформировать SDP-ответ, возникало обращение по
NULL-указателю (или по мусорному указателю). Теперь тело ответа устанавливается
после всех возможных проверок. Closes #183.
1045 by alx on 2016-06-16 15:30:22
Добавлена поддержка расширенных проверочных кодов на управляющей шине кроссплаты (SPI).
1034 by alx on 2016-04-20 10:24:28
Раскомментарен забытый ранее сброс comcerto_heartbeat при сбросе WDT.
Сброс WDT добавлен в функцию ожидания ответа от MSP.
1033 by alx on 2016-04-20 09:50:44
В конфигурации repro параметр DisableAuthInt опять установлен в значение false,
так как подтвердилось, что футентификация с auth-int выполняется правильно.
1032 by alx on 2016-04-12 15:56:05
Commit 1029 откачен для файлов fxs.cpp и fxo.cpp (не нужен пока не используется PPPoE).
1030 by alx on 2016-04-12 12:15:27
Активация PPPoE заблокирована до лучших времен.
1029 by alx on 2016-04-12 12:13:17
Сделана установка режима PPPoE в первом приближении.
Работает пока не очень.
1028 by alx on 2016-04-12 12:11:59
Солращено время конфигурации ПЛИС при старте программы.
1027 by alx on 2016-04-11 18:24:50
Старт repro теперь выполняется до старта поллера, так как поллер использует функции repro.
Непосредственно перед стартом repro с интерфейса eth0 снимается адрес IP, так как при его наличии
repro пытается получить по нему имя хоста, что может вызвать длительную задержку.
1026 by alx on 2016-04-11 15:50:16
Параметр DisableAuthInt установлен в значение true, так как есть подозрение
что repro неверно вычисляет ответ при проверке аутентификации. Closes #164.
1025 by alx on 2016-04-08 16:44:41
Исправлен баг, появившийся в r1012: не проигрывалась hold music.
1024 by alx on 2016-04-08 14:34:40
Отключение pppoe теперь конфигурируется пустой строкой вместо строки "no".
Это сделано для совместимости с предыдущими версиями, где параметр pppoe отсутствует.
1023 by alx on 2016-04-07 18:32:24
Добавлена поддержка PPPoE:
Методу set_eth_hdr_chan() добавлен параметр is_pppoe.
Добавлен метод set_pppoe_hdr_chan() для установки PPPoE session ID.
При инициализации MSP посылается FC_PPPOE_SERVICE_CFG.
get_route() теперь дополнительно возвращает имя интерфейса.
Изменен алгоритм определения dst MAC: если src_ip и dst_ip равны,
то вместо get_route() + getMac() выполняется get_iface_mac("eth0").
Если src_ip и dst_ip не равны, то по имени интерфейса определяется,
будет ли это соединение PPPoE или просто ethernet.
В случае PPPoE адрес концентратора и session ID читаются из файла /tmp/pppoe_id.
Плата принимает глобальный параметр "pppoe" с настройками pppoe. Немного переделана
логика старта udhcpd и добавлен запуск pppd.
При выдаче настроек сети учитывается интерфейс ppp0.
Наличие интерфейса ppp0 учитывается при формировании параметра Record-Route в SIP транспортах.
Инициализация MSP теперь выполняется сразу при старте программы, а не после получения настроек.
1022 by alx on 2016-04-07 12:38:44
Как показала практика, ntpclient завершается, если у платы нет внешнего адреса IP
(предположительно из-за no route to host).
Сделан перезапуск ntpclient при его отсутствии (приблизительно раз в секунду).
1021 by alx on 2016-04-07 09:52:22
Исправлена ошибка двойного удаления транспорта. Могла приводить к падению при смене адреса платы.
1020 by alx on 2016-03-31 16:16:34
В случае неудачного вызова set_SPU_features() выполняется пауза 1 сек.
и затем повторный вызов set_SPU_features().
1019 by alx on 2016-03-31 15:46:32
MSP_TIMEOUT увеличен с 500 до 750 мс, так как иногда MSP не успевал ответить
на напрос SPU_FEATURES_CONTROL.
1018 by alx on 2016-03-31 12:10:03
Исмправлен поиск SRTP media при получении ответа на наш INVITE.
1017 by alx on 2016-03-30 17:52:45
У полупостоянных RTP потоков при включенном VAD отключаем мониторинг RTP чтобы не
выдавать ложной аварии (предполагается что настройка VAD бдет одинаковой на обоих концах).
1016 by alx on 2016-03-30 12:04:11
Исправлен баг: при включении потока RTP в настройках VCEOPT терялись биты включения VAD
и установки скорости G.723.
1015 by alx on 2016-03-30 10:41:30
RTP потокам добавлена функция разрешения VBD. В передаваемое плате SW-01 состояние
добавлено имя кодека.
1014 by alx on 2016-03-30 10:40:26
Обработка индикации Passthru Autoswitch перенесена из класса SIPChannel
в класс ComcertoChannel. В set_EC() добавлена проверка существования канала.
1013 by alx on 2016-03-29 19:05:14
В окончания RTP добавлено включение VAD.
Там же добавлен вызов set_EC() при каждом получении конфигурации (иожно отключать EC "на лету").
1012 by alx on 2016-03-29 16:10:52
Merged srtp branch.
Добавлена поддержка SRTP.
1010 by alx on 2016-03-29 09:17:50
Исправлена ошибка: при создании полупостоянных потоков нельзя было передавать СУВы с pt=101
из-за того что pt=101 уже был занят RFC2833 DTMF. сейчас изначально для RFC2833 DTMF никакой
pt не назначен, а PT для RFC2833_EVENT устанавливается после успешного выполнения setRTPparams(),
а не перед ней.
934 by alx on 2015-12-30 12:21:13
Сделана поддержка расширения протокола мониторинга с числом строк таблиц больше 255.
933 by alx on 2015-12-30 11:04:28
Временно отключили индикацию поддержки расширенного набора кодеков.
929 by alx on 2015-12-29 11:37:10
Добавлена поддержка кодеков GSM и G728.
928 by alx on 2015-12-29 09:50:16
В FEATURES разделены биты поддержки T.38 и R2.
У окончания R2 добавлено новое состояние - Address Complete.
927 by alx on 2015-12-28 17:20:43
Исправлена ошибка: отправлялся ACK при получении ACK и ответов 180/183.
926 by alx on 2015-12-28 17:04:17
Merged branches/t38
922 by alx on 2015-12-25 12:36:36
Устранено сообщение об ошибке, вызванное попыткой отключить тональный сигнал у не созданного канала.
895 by alx on 2015-12-21 17:27:21
Обнаружена поломка детектирования call progress сигналов окончаниями FXO.
Причина - TONETED посылалось до активации канала.
Исправлено путем посылки TONEDET после активации канала и установки кода страны.
881 by alx on 2015-12-08 17:24:10
Обнаружено, что repro падал, если файлы сертификата/ключа/CA пустые.
Добавлена проверка на размер файла, и если он равен нулю, это трактуется как отсутствие файла.
Манипуляции с repro защищены от гонок семафором.
880 by alx on 2015-12-08 14:34:45
При изменении IP адреса вместо "сокращенного" рестарта выполняется полный рестарт
с удалением и созданием прокси. Штатный рестарт в repro_update_user_domains()
приводил к падению и перезагрузке платы.
879 by alx on 2015-12-08 12:27:17
Устранено падение при попытке добавить пустой домен (возникало при использовании DHCP).
Добавлена проверка на непустую строку IP адреса платы.
869 by alx on 2015-11-25 15:49:23
Исправлена ошибка: не устанавливался флаг наличия 255-го канала (был выход за границу массива).

Сделан прием файла публичных ключей SSH.

868 by alx on 2015-11-25 10:25:42
Закомментарен пользователь admin в веб-интерфейсе repro.
867 by alx on 2015-11-24 11:57:14
Все ответы 406 (Not Acceptable) заменены на 488 (Not Acceptable Here).
866 by alx on 2015-11-24 11:44:12
Исправлена ошибка: при получении REINVITE не проверялось, есть ли поддерживаемый кодек.
Сразу пытались ответить 200 OK, из-за чего впоследствии падали из-за NULL указателя
вместо имени кодека (см. предыдущий коммит).
865 by alx on 2015-11-24 11:16:40
Сделана проверка на NULL вместо имени кодека в call_event_t.
864 by alx on 2015-11-23 11:38:13
Устранено сообщение об ошибке при неиспользовании telephony-event.
Поля tx_event_pt/rx_event_pt в rtp_event_t сделаны типа int.
Вызов setPayloadType(eDTMF_RTP) теперь выполняется только при неотрицительном tx_event_pt.
863 by alx on 2015-11-18 15:06:27
ntpclient'у вернули опцию -s (без нее не происходило начальной установки времени после старта платы).
862 by alx on 2015-11-18 15:05:02
Отключена функция RPC (порт 5081).
861 by alx on 2015-11-18 12:25:09
Файлы SSL сертификата и ключа вбиты в код гвоздями и удалены из конфиг-файла.
Добавлена установка конфиг-файла и файла пользователей.
860 by alx on 2015-11-18 09:35:50
Merged resiprocate branch.
859 by alx on 2015-11-17 19:02:54
Исправлено поведение при получении ответа на предложение SDP, в котором event pt отличается от
переданного в предложении: мы передаем события с pt, полученным в ответе удаленной стороны, и
ожидаем с pt, переданным нами в предложении.
858 by alx on 2015-11-17 14:52:50
Исправлена ошибка: при пересоздании PRI (например при измеении типа узла) в состоянии UP
состояние не изменялось на дефолтное DOWN. Closes #147.
853 by alx on 2015-11-13 17:43:42
В окончаниях ISDN PRI при получении SETUP с пустым номером вызываемого даем dialtone.
850 by alx on 2015-11-06 18:28:29
ntpclient теперь запускается с опцией -t вместо -s. Это должно
гарантировать установку времени от NTP сервера.
849 by alx on 2015-10-19 12:02:58
Убран вывод в лог сообщений о переключении в режим VBD и обратно.
848 by alx on 2015-10-01 19:13:59
При ответе на предложение SDP теперь используются те же значения payload type, что были в предложении.
842 by alx on 2015-09-29 12:51:43
исправлена ошибка в окончаниях FXS: если в деактивированном состоянии канала приходил
кратковременный импульс по СУВ a (помеха в линии), канал активировался, но сообщение eCasEvent
ему не приходило, в результате канал оставался в активированном состоянии.
Теперь при активации канала запускается таймер, и если в течение 100 мс сообщение eCasEvent
не приходит, происходит деактивация канала.
831 by alx on 2015-09-25 19:27:02
Исправлена ошибка: не проверялось разрешение и активация услуги ожидания вызова, если вызов поступал
непосредственно конкретному канальному окончанию (при регистрации канального окончания на внешнем сервере).
830 by alx on 2015-09-25 19:23:46
Исправлены ошибки, возникавшие при обнаружении снятия трубки сразу после деактивации канала
(предположительно если деактивация происходила после изменения СУВ но до срабатывания таймаута 10 мс).
Ошибка выражалась в невозможности выполнить send_TONEGEN() из-за channelId = -1.
Теперь перед выдачей сигнала готовности проверяется, создан ли канал, и если нет, он активируется.
829 by alx on 2015-09-23 09:07:53
В окончаниях FXS добавлены остановки таймеров перед их повторным стартом.
Это помогло в Шабурах избавиться от сообщений об ошибках типа stopTone() при деактивированном канале.
828 by alx on 2015-09-07 15:30:15
Исправлена ошибка: происходило падение при попытке вызвать URI без имени пользователя.
825 by alx on 2015-08-28 16:59:36
Merged from eXosip branch.
Firmware revision 21.
71 by alx on 2012-10-30 12:31:29
Исправлена кодировка комментариев
70 by alx on 2011-11-30 15:56:42
Fixed bug with hangup after 1 minute on outgoing calls.
69 by alx on 2011-11-29 19:58:48
Ringback tone in FXS
68 by alx on 2011-11-29 19:21:58
Works with internal freeswitch
67 by alx on 2011-11-29 11:25:33
Transport parameters made configurable.
To: domain and From: domain made configurable.
66 by alx on 2011-11-28 12:12:54
Accounts created for every endpoint (timeslot)
65 by alx on 2011-11-28 10:55:04
get_route function added (not used yet)
64 by alx on 2011-11-25 18:22:09
DTMF pause in FXO made configurable.
63 by alx on 2011-11-25 18:19:16
DTMF duration in FXO made configurable.
62 by alx on 2011-11-25 18:16:46
Dialtone timeout in FXO made configurable.
61 by alx on 2011-11-25 18:13:55
Ring timeout in FXO made configurable.
60 by alx on 2011-11-25 18:09:44
FXO gets config
59 by alx on 2011-11-25 15:17:36
AGC control fixed
58 by alx on 2011-11-25 12:32:41
Added AGC support
57 by alx on 2011-11-25 12:10:52
Swapped rx-gain and tx-gain parameters.
Rx direction is now IP -> TDM,
Tx direction is now TDM -> IP.
56 by alx on 2011-11-25 11:11:34
RTCP parameters logging
55 by alx on 2011-11-24 19:29:44
RXGAIN and TXGAIN made configureble
54 by alx on 2011-11-24 18:43:57
Deleted unused variables
53 by alx on 2011-11-24 18:41:08
Line coding (a-law / u-law) is now configurable
52 by alx on 2011-11-24 17:55:08
Setting real RTP payload types for DTMF events,
setting audio RTP payload types independently in both directions
51 by alx on 2011-11-24 12:01:22
DTMF payload type configuretion added (always 96)
50 by alx on 2011-11-23 15:52:26
max-digits and dial-regexp implemented for FXS.
49 by alx on 2011-11-23 11:31:19
Ring times, dialtone timeout, inter-digit timeout, call timeout made configurable.
48 by alx on 2011-11-23 10:42:52
FXO partially works
47 by alx on 2011-11-22 19:12:18
Start/stop RTP stream from endpoint classes.
46 by alx on 2011-11-22 15:44:21
FXS endpoints are creating according to configfile.
45 by alx on 2011-11-22 11:34:59
fxo module added
44 by alx on 2011-11-22 11:32:57
43 by alx on 2011-11-22 11:16:48
Deleted dead code
42 by alx on 2011-11-22 10:47:42
sendCID added
41 by alx on 2011-11-21 19:22:01
Added parsing local URI and searching endpoint by call_id.
40 by alx on 2011-11-21 12:32:13
Codecs priorities are set from config file.
39 by alx on 2011-11-21 11:16:41
Added rudeconfig library
38 by alx on 2011-11-19 12:27:33
RudeConfig library added
37 by alx on 2011-11-17 20:44:48
Outgoung calls now work
36 by alx on 2011-11-17 19:10:33
Cancel incoming call bug fixed.
35 by alx on 2011-11-16 20:33:25
Fixed codec parameters check
34 by alx on 2011-11-16 20:08:01
Dummy codec module added
33 by alx on 2011-11-15 20:09:03
call_id bug fixed
32 by alx on 2011-11-15 19:41:00
Added dialing support
31 by alx on 2011-11-07 19:56:36
Dialtone timeout added
30 by alx on 2011-11-07 19:25:36
Tone generation made
29 by alx on 2011-11-06 00:22:36
28 by alx on 2011-11-06 00:10:41
abstract_channel.h added
27 by alx on 2011-11-05 19:44:19
Signaling is now processing by channel objects.
26 by alx on 2011-11-05 16:46:14
Deleted unused members
25 by alx on 2011-11-05 16:40:49
Deleted module threadmutex. Now using Mutex and Interrupt classes.
24 by alx on 2011-11-05 16:13:37
23 by alx on 2011-11-05 16:09:29
Implemented Interrupt and Mutex classes
22 by alx on 2011-11-05 02:55:07
All modules converted to c++.
21 by alx on 2011-11-05 01:24:55
fxs and comcerto modules converted to c++
20 by alx on 2011-11-05 00:55:27
Dep files generation added.
sip_ua and log converted to c++.
19 by alx on 2011-11-03 20:39:05
18 by alx on 2011-11-03 02:09:27
Ring timer works.
17 by alx on 2011-11-03 00:25:58
Main scheduler added
16 by alx on 2011-11-03 00:08:38
Made select() for stdin
15 by alx on 2011-11-03 00:00:03
Event queue now works
14 by alx on 2011-11-02 23:47:17
Fixed std_queue_wait()
13 by alx on 2011-11-01 20:36:16
Global event queue added
12 by alx on 2011-11-01 20:23:37
queue module added.
11 by alx on 2011-11-01 20:02:51
Nothing special
10 by alx on 2011-11-01 19:37:13
Scheduler module added
9 by alx on 2011-10-31 21:24:57
Threadmutex module added
8 by alx on 2011-10-31 19:30:04
codecs
7 by alx on 2011-10-30 18:08:30
Start/stop RTP stream implemented
6 by alx on 2011-10-30 01:34:14
Now we getting RTP parameters (locad/remode address/port, codec, payload type) on created stream
5 by alx on 2011-10-29 19:46:14
Ringing on incoming call
4 by alx on 2011-10-29 19:16:56
Initializing comcerto device
3 by alx on 2011-10-29 16:45:09
created SIP user-agent
2 by alx on 2011-10-28 19:27:43
Module utils added
1 by alx on 2011-10-27 23:38:46
SIP UA project
(more)

Last modified 7 years ago Last modified on Jan 24, 2019, 5:33:02 PM
Note: See TracWiki for help on using the wiki.