Re: nokia E70 и communigate

От: Vladimir A. Butenko <CGatePro_at_mx_ru>
Дата: Fri 03 Nov 2006 - 00:36:10 MSK

On Thu, 02 Nov 2006 20:19:02 +0300
  "German Myzovsky" <CGatePro@mx.ru> wrote:

> Oleg Shumsky wrote:

>> Здравствуйте.
>>
>> Коллеги, я снова буду раздражать вас глупыми вопросами :)
>>
>> Итак, есть 5.1.0 и модифицированный gatewaycaller. Всяческие зухели,
>> sjphone и прочее работают нормально. Но вот в парке железа появилась
>> Nokia E70.
>>
>> Все выглядит следующим образом. Абонент набирает какой-либо номер (в
>> pstn сети), звонок проходит. На другом конце поднимают трубку, дальше
>> нокие говорит "Услуга интернет телефонии недоступна".
>>
>> Теперь как это выглядит внутри:
>>
>> Я так понял, что все дело в 491-м коде. А что это за код? И что с ним
>> должно происходить в gatewaycaller ?
> 

>> 18:33:53.824 5 SIPDATA-000492 inp: o=Nokia-SIPUA 63330662041396250
>>63330662041396251 IN IP4 83.102.163.30

>> 18:33:53.824 5 SIPDATA-000492 inp: m=audio 16386 RTP/AVP 0 98
> 
> Такой SDP приходит при re-INVITE (первый INVITE выглядит иначе). Первый 
>INVITE приходит в состоянии HOLD с объявлением всех кодеков, но без 
>открытия каналов. Получив от сервера 200-INVITE телефон должен закончить 
>транзакцию (ACK) и затем выдать re-INVITE с открытыми медиа-каналами. Этот 
>re-INVITE (CSeq: 1766) вы и приложили к письму. Проблема в том, что ACK 
>1765 не было, предыдущая транзакция не закончилась, а уже пендится новая. 
>Такая последовательность неприемлема, поэтому сервер возвращает 491-INVITE.

Чуть-чуть поправлю: такая последовательность действительно неприемлима, но она может возникнуть не из-за бага в клиенте (хотя в случае Нокии - это, видимо, баг) - а из-за задержек на сети: то есть клиент послал ACK, потом послал re-INVITE - а ACK где-то на каком-то рутере остановился чайку попить, ну и пришел позже.

Поэтому выдается 491 - это код "попробуй еще раз попозже". По идее, такой код может быть возвращен всегда, и любой правильный клиент (или сервер) должен на этот код подождать случайное время (0.1-1s) и перепослать запрос. А этого, видимо, не происходит.

491 может возникнуть, например, если обе стороны будут пробовать послать re-INVITE чтобы встатть на Hold - "одновременно". Если у Вас сигналы идут по полсекунды (весьма реально, если Вася с Машей на разных континентах), то такое вполне возможно.

Но обычно это таки да - свидетельство какого-то бага в клиенте: неверной последовательности команд или еще чего-нибудь такого.

> -- 
> 
> Герман Мызовский,
> Tario Communications.

Sincerely,
Vladimir Получено Thu Nov 02 21:34:51 2006

Этот архив был сгенерирован hypermail 2.1.8 : Fri 03 Nov 2006 - 01:12:56 MSK