Комментарии 11
Как видим, CNAME не указан - нет текста с ним, а длина элемента 0 бит.
Строго говоря, CNAME указан -- пустая строка. Так как в звонке два абонента, у второго непустая строка, то все требования соблюдены -- у каждого есть CNAME и они уникальны для каждого абонента.
Не согласен с вами, если есть поле а значения нет то не указан, с такой логикой можно сказать что поле Connexion information IP4 "Пусто" должно работать.
Должно работать в каком смысле?
"RTCP carries a persistent transport-level identifier for an RTP
source called the canonical name or CNAME, Section 6.5.1. Since
the SSRC identifier may change if a conflict is discovered or a
program is restarted, receivers require the CNAME to keep track of
each participant. Receivers may also require the CNAME to
associate multiple data streams from a given participant in a set
of related RTP sessions....
То есть CNAME необходим для уникального идентифицирования абонента в случае смены SSRC или наличия множества стримов.
Да, CNAME обязан быть передан -- и он передан, в пункте 6.5.1 я не вижу ничего, что делало бы пустую строку невалидной.
Вы же сами написали про уникальный идентификатор, или для вас пустое поле это уникально ?
Интересное замечание - не думал в таком ключе! К сожалению, информации о поведении АТС на стороне того абонента нет. Можно предполагать, что сам сервер по внутренней логике всё же ожидал получить текст CNAME, раз быстро вышло исправление его версии.
Я уверен, что это был баг на той стороне.
Однако это не отменяет того факта, что поведение вашей стороны тоже не совсем корректно: тут либо реакция должна быть такой же как на отсутствие тега CNAME вообще, скорее всего -- отказ в установлении соединения -- либо принять, и использовать его как есть -- то есть пустое значение это всё же значение.
Вы провели отличное глубокое расследование и нашли очень редкий случай, который обычно поймать можно только с помощью удачи (и/или фаззинга), теперь стоит сделать вывод и принять решение как реагировать на него с вашей стороны. :)
Чего точно не стоит делать -- так это хоронить проблему и забить.
Ну и зачем, я читал этот RFC ? Я ведь не связан с RTP протоколами.
Но даже беглого просмотра хватило, чтобы понять UUID в качестве CNAME тоже не айс.
Только сейчас нашел эту статью - прочитал с огромным удовольствием. Именно за таким материалом я хожу каждый день на Хабр, но нахожу очень редко.
Отсутствие слышимости в SIP-диалоге при смене SSRC и отсутствии CNAME