> О каких реализациях идёт речь?
> Вы обвиняете протокол в том, что какие-то криворукие разработчики не смогли его
> реализовать в своей библиотеке?Я "обвиняю" протокол в том, что он изначально продуман из рук вон отвратительно с сотнями ляпов и несоответствий, как идеологических, так и фактических. И для этого не нужно обладать эзотерическими знаниями, достаточно почитать bugs.sipit.net. Там полно примеров от явных дефектов в описании синтаксиса до принципиальных проблем реализации.
Одним из наиболее тяжёлых примеров такой провокации является независимость многих элементов синтаксиса от регистра. Во-первых, это резко утяжеляет парсинг. Во-вторых, ошибка в понимании этого (а вычитать сам факт независимости для многих полей, мягко говоря, требует работы) приводит к интересным эффектам. Например, есть реализации, которые твои теги в ответе конвертят к единому регистру (далеко не всегда это только нижний), а есть, которые считают теги case sensitive. В результате приходится для каждого тега держать две формы - канонизированную для сравнения и исходную - для ответа или продолжения диалога.
Другой пример - session negotiation, которая с учётом всех расширений типа UPDATE или правил типа "если в PRACK offer, то в 200/P должен быть answer" превратилась в невменяемый кошмар для разработки и поддержки.
Авторы разработок такого уровня должны знать, что все разработчики так или иначе криворукие, и провоцировать их - вредно для результата.