I am facing a situation when my sip client sends a deregister with call ID without IP address. Call-ID: ZbTZ3VwsZoknVtlvROGGsOO8pt0hpFi. This message is causing looping of the 200 OK responses as the via header of the next register message from same client is changed.
The situation is as follows
deregister :LanClient--->Proxy-->Server
Response
Repeat:
100 trying :Server-->Proxy--xx->LanClient
200 Ok :Server-->Proxy--xx->Lanclient
goto Repeat
When one deregister message(i.e register message with expires=0) goes to the server the Via header contains the WAN IP of our proxy rather than LAN Client IP.This causes the respones from the server to go the WAN IP than the LAN IP.
What I am curious about is about that out of multiple clients registered with the server only the problem client messages have Call-ID field without an IP address. I know that we can have call-ID without IP address. How would having an IP or not Having an IP in call ID make a difference in my scenario...
The value of the Call-Id
header is just a string, at least from the perspective of the receiver of the request.
When a client deregisters, it should use the same Call-Id that was used for registration.
I don't understand the Via header part. Obviously, consequtive REGISTER requests (and other messages as well) has different Via headers since the branch parameter is new for every transaction.