Tamkovich.com: Телеком/VoIP блог
Телеком, ИТ и все все все
Интересное в Asterisk 1.6.0.2 (1.6.0.3-rc1)
Декабрь 9th, 2008 by sergee
2 декабря 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
