Jain Sip processRequest Метод в SipListener не вызывается

У меня возникла странная проблема с использованием 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 ответ

Решение

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

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

Другие вопросы по тегам