Tamkovich.com: Телеком/VoIP блог
Современные технологии: Asterisk, SIP, Kamailio, Linux, Cisco, Linksys
Интересное в Asterisk 1.6.0.2 (1.6.0.3-rc1)
Декабрь 9th, 2008 by Сергей Тамкович
Asterisk2 декабря 2008 года состоялся релиз Asterisk 1.6.0.2. Не смотря на то, что релиз оказался бракованным, ChangeLog данного релиза содержит 65 записей. Это означает, что, с момента релиза 1.6.0, внесено более 65 исправлений!
Вместе с релизом 1.6.0.2 также состоялись релизы других веток: 1.2.30.3, 1.4.23-rc2 и 1.6.1-beta3. Из всего этого многообразия, наиболее интересны релизы ветки 1.6.0, т.к. она, достаточно давно стала для меня золотой серединой между bleeding-edge фичами из транка и стабильностью (сомнительной) устаревшей ветки 1.4.
В данной заметке я расскажу о наиболее значимых исправлениях. Для удобства я разделил исправления, по типу проблем:
Crash
В данной категории, содержатся исправления ошибок, приводивших к обрушению системы (деление на ноль, сегфолт и т.д.)
- Bug 13715 – Если в AMI запросе GetVar использовать функцию диалплана, для работы которой требуется валидный параметр Channel: (например SIP_HEADER) и не указать Channel: (или указать несуществующий) – происходит сегфолт. Теперь для запросов с неверным параметром Channel: создается фиктивный канал Bogus/ на котором и выполняется запрошенная функция диалплана.
- Bug 13804 – app_directory совершит сегфолт, если в файле voicemail.conf есть записи без имени (с пустым полем user_name)
- Bug 13829 – В случае использования IMAP Storage, возможны сегфолты, т.к. app_voicemail вызывал функцию
mail_expunge()без предварительной проверки аргумента наNULL. - app_directory crash – Если отсутствует поле Full Name, поиск по списку имен вызывает сегфолт.
- ATXFR crash – При использовании Attended Transfer, в конце звонка происходил сегфолт. Данная ошибка была внесена в процессе модернизации CDR подсистемы.
- Bug 13871 – Еще одно следствие модернизации CDR подсистемы. Если внутри Local-канала вызвать
NoCDR()– Asterisk совершит сегфолт сразу после ответа вызываемой стороной. - Bug 13848 – Если отсутствует файл udptl.conf то первая же попытка использовать Т38, приведет к делению на ноль и краху системы.
Leaks & DeadLocks
В данной категории, содержатся исправления ошибок, приводивших к утечке ресурсов (память, файловые дескрипторы и т.д.) сюда же включены разнообразные дедлоки.
- Bug 13676 – Небольшой дедлок в chan_local. Найден и устранен.
- chan_misdn leak – Небольшая утечка в chan_misdn. При высвобождении джитер-буфера, терялся массив байт
jb->ok(по умолчанию 4000 элементов). - Bug 13331 – 3 утечки памяти в chan_sip. Съедали 4 Гб ОЗУ менее чем за 2 дня. Более 2х месяце я отлавливал эти баги.
- Bug 13785 – Небольшая утечка памяти в chan_mgcp, проявлялась лишь при перезагрузке модуля.
Logic
В данной категории, содержатся исправления логических ошибок, отклонений от стандартов, проблем с interoperability и т.д.
- Bug 13668 – Счетчики звонков иногда уходили в минус (-1). Когда это случалось, лампочки на консоле (например Linksys SPA-932) инвертировались. Некритично, однако очень неприятно.
- chan_sip имя канала – Если, оконечное оборудование включало порт в заголовок From:, то в некоторых случаях каналы назывались используя номер порта, вместо IP адреса, в результате, список активных каналов (да и CDR) заполнялись каналами вида SIP/5060-3ea38a8b, SIP/5060-83ace21, SIP/5060-0a7be2… Теперь номер порта не используется для генерации имени канала.
- Bug 12884 – В случае когда в очереди нет агентов удовлетворяющих
QUEUE_MIN_PENALTYиQUEUE_MAX_PENALTYвходящие звонки отбивались с причинойJOINEMPTYдаже в тех случаях, когда были свободные агенты с большим penalty. - Bug 13793 – В процессе модернизации CDR подсистемы – потерялись переменные канала
DIALSTATUS,ANSWEREDTIMEиDIALEDTIME. - Bug 13626 – Небольшое изменение в конечном автомате chan_sip, с тем что бы не посылать запросы CANCEL до того как не получен ответ TRYING на наш первоначальный запрос.
- Шаблоны диалплана – небольшое изменение в приоритетность шаблонов в диалплане. Теперь шаблон вида
_[1-8]XXимеет приоритет над шаблоном вида_NXXкак и должно быть. - Bug 13878 – Невозможно записать early media после того как отправлен ответ 183 Session Progress. Еще одна ошибка в конечном автомате chan_sip.
- Bug 12694 – при оригинации IAX звонка через callfile или AMI, Все не отвеченные звонки (
BUSY,NO ANSWERилиFAILED) отображаются в CDR какFAILED.
Итого:
Релиз 1.6.0.2 исправляет 19 существенных ошибок, из которых: Приводящих к сегфолту (делению на ноль и т.п.) – 7 штук, утечек ресурсов – 8 штук.
Asterisk
