2012-03-30 4 views
0

Ich habe ein seltsames Problem mit Jain Sip (Download heute Version Jain-sip-ri-1.2.2014.jar). Ich verbinde mich mit einer PBX, um ein paar Sachen mit ihr zu machen. Die Verbindung funktioniert gut, ich kann auch MakeCall Befehle usw. ausführen, aber nach einiger Zeit (~ 20 Minuten) scheint der Jain Sip Stack die processRequest Methode nicht mehr aufzurufen. Ich glaube nicht, dass das Session-Expires oder das Timeout zwischen den ReInvites keine Rolle spielt.Jain Sip processRequest Methode in SipListener heißt nicht

Ich verfolgt die gesamte Kommunikation mit Wireshark, also weiß ich, dass es eine Anfrage gibt.

Die Kommunikation läuft so.

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 

bis jetzt ist alles in Ordnung. Nach einiger Zeit, die ich nichts tue, rufe ich das überwachte Gerät (Telefon) auf, so dass die PBX ein DeliveredEvent erzeugt.

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

Diese Nachricht ist 11 Mal durch eine 11 Bye Nachrichten gefolgt senden

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

Warum ist die Methode Process nicht genannt? Wenn Sie weitere Informationen benötigen, um mir bei meinem Problem zu helfen, zögern Sie nicht zu fragen.

Antwort

0

Nach einigen Stunden Debugging habe ich endlich das Problem gefunden. Die Windows-Firewall hat das UDP blockiert. Der UPD erschien in meinem Draht-Shark-Trace, wurde aber nie vom Socket meiner Anwendung empfangen.

Nach dem Senden eines UDP wartet das zugrunde liegende Internet Protocol auf eine Antwort, da es sich bei einem UDP um eine Antwort handelt. Die Firewall bleibt jedoch geöffnet, bis die IP-Zeit abgelaufen ist. Deshalb funktioniert es 64 Sekunden lang.