Jain Sip processRequest Метод в SipListener не вызывается - PullRequest
0 голосов
/ 30 марта 2012

У меня возникла странная проблема с использованием Jain Sip (загрузить сегодня версию Jain-sip-ri-1.2.2014.jar). Я подключаюсь к УАТС, чтобы сделать что-то с UaCSTA. Соединение работает нормально, я также могу выполнять команды MakeCall и т. Д., Но через некоторое время (~ 20 минут) Jain Sip Stack, похоже, больше не вызывает метод processRequest. Мне кажется, что Session-Expires или тайм-аут между ReInvites не имеет значения.

Я проследил все коммуникации с Wireshark, так что я знаю, что есть запрос.

Связь идет следующим образом.

1. me -> PBX Request: INVITE sip:xxx  CSTA RequestSystemStatus
2. me <- PBX Status:  100 Trying
3. me <- PBX Status:  200 Ok          CSTA RequestSystemStatusResponse Normal
4. me -> PBX ACK             sip:xxx 
5. me -> PBX Request: INFO   sip:xxx  CSTA MonitorStart
6. me <- PBX Status:  200 Ok          CSTA MonitorStartResponse

до сих пор все в порядке. Через некоторое время, ничего не делая, я вызываю контролируемое устройство (телефон), чтобы УАТС генерировала событие DeliveredEvent.

x. me <- PBX Request: INFO   sip:xxx  DeliveredEvent

это сообщение отправлено 11 раз, за ​​которым следуют сообщения 11 пока

x. me <- PBX Request: BYE    sip:xxx  

Так почему метод processRequest не вызывается? Если вам нужна дополнительная информация, чтобы помочь мне с моей проблемой, не стесняйтесь спрашивать.

1 Ответ

0 голосов
/ 02 апреля 2012

После нескольких часов отладки я наконец нашел проблему. Брандмауэр Windows заблокировал UDP. UPD появился в моей трассировке Wire Shark, но не был получен сокетом моего приложения.

После отправки UDP базовый интернет-протокол ожидает ответа, поскольку это UDP, а ответа нет. Но Брандмауэр остается открытым, пока не истечет Время жизни IP. Вот почему он работает в течение 64 секунд.

...