We are using a slightly modified version of sip communicator without GUI for a big project. I am facing a problem that a call will successfully be established but if the caller hangs up callee doesn't recognize that the call was terminated. This causes inconsistencies in our system.
My next thought was to test this with two original versions of sip communicator (build 1896), and the problems did not occur.
So I tested my program in the following environment:
- WIN XP
- java version "1.6.0_11"
- Java Hotspot(TM) Client VM (build 10.0-b16, mixed mode, sharing)
B: Sip Communicator (build 1896) using eclipse
- WIN XP
- java version "1.6.0_07"
- Java Hotspot(TM) Client VM (build 10.0-b23, mixed mode, sharing)
Server: 3CX Phone System v6.1.0 run on WIN XP
My tests showed that
- if A calls B and A hangs up, B gets the CallParticipantChangeEvent and terminates the call correctly, but
- if B calls A and B hangs up, A does not get the CallParticipantChangeEvent and therefore doesn't hang up
I used whireshark and found out, that in the second case the BYE request from B is not forwarded to A by the server. That is why the CallParticipantChangeEvent won't be fired and A is not able to terminate the call correctly. Does anyone know why the server does not forward the BYE request? I also found out that the BYE Requests differ slightly between A and B
(The BYE Packet of B is missing the following: "Allow: INVITE,ACK,CANCEL,OPTIONS,BYE,REGISTER,SUBSCRIBE,NOTIFY,REFER,INFO" - could that be the problem?)
I attached the flow of both cases as well as the dump of both BYE packets.
Thanks for your help!
Best wishes, Nico
A-B_BYE_Working.zip (105 KB)
B-A_BYE_notWorking.zip (134 KB)
A: modified version of Sip Communicator (based on build 1896)
Smart Biomedical Systems
ARC - Austrian Research Centers
Viktor Kaplan Straße 2
2700 Wr. Neustadt