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 секунд.