На главную | В раздел

sipX 4.4 4.6 Hanlong Unicorn 600X Record-Route header problem

Проблема характерна для прошивки версии 1.0.5.10
Проблема заключается в том, что при посылке SIP re-INVITE шлюз Hanlong Unicorn 600X искажает содержимое заголовка Record-Route и в заголовке Route возвращает не совсем то, что было получено в Record-Route.
В результате этого искажения сервер sipXecs отвергает запрос несмотря на удачную авторизацию через Digest. Т.к. в этом заголовке содержится информация для правильной внутренней обработки в т.ч. авторизации.
Ярко проявляется в сценарии приема факса в режиме T.38 на FXS порт шлюза Hanlong Unicorn 600X. При этом происходит смена кодеков путем отсылки re-INVITE с T.38 в SDP.
Вот заголовок, который приходит от сервера на шлюз в INVITE:
Record-Route: <sip:x.x.x.x:5060;lr;sipXecs-CallDest=INT;sipXecs-rs=%2Aauth%7E.%2Afrom%7EODZwanRLMzVYOGEzUQ%60%60%21c9cdaaea36e748353450a0a19ac140ae>
Вот заголовок, который шлюз посылает в reINVITE:
Route: <sip:x.x.x.x:5060;lr;sipXecs-CallDest=INT;sipXecs-rs=%252Aauth%257E.%252Afrom%257EODZwanRLMzVYOGEzUQ%2560%2560%2521c9cdaaea36e748353450a0a19ac140ae>
Шлюз заменяет последовательность %2A на %252A и %7E на %257E, т.е. фактически "экранируя" символ "%" (ACII код 0x25).
Пример сценария с ошибочными сообщениями:
sipXecs ---- INVITE SDP(PCMA) --> Unicorn
sipXecs <- 100 Trying ----------- Unicorn
sipXecs <- 180 Ringing ---------- Unicorn
sipXecs <- 200 OK SDP(PCMA) ----- Unicorn
sipXecs -------- ACK -----------> Unicorn
sipXecs <---- INVITE SDP(T.38) -- Unicorn (message with malformed Route header)
sipXecs - 100 Trying -----------> Unicorn
sipXecs - 407 Proxy Auth -------> Unicorn
sipXecs <- INVITE SDP(T.38)Auth - Unicorn (message with malformed Route header)
sipXecs - 403 Require NoAccess -> Unicorn
sipXecs <-------- ACK ----------- Unicorn
Такая же проблема характерна для шлюзов GrandStream GXW-4024 т.к. устройства базируются на одной платформе.

© Константин С. Вишнивецкий, 2007-2017