Hi, I have presence in OpenSer same box.
modparam("presence","server_address","sip:85.92.0.210")
I've a problem because I get "in-dialog" SUBSCRIBE messages without "Route" header:
When my SIP client (Twinkle or X-Lite) starts up it sends a SUBSCRIBE NOT-in-dialog:
---------------------------------------------------------------------------------------------------------- # U 2007/09/10 17:54:08.294012 222.21.235.18:5060 -> 85.92.0.210:5060 SUBSCRIBE sip:ibc@sip.domain.net SIP/2.0 Via: SIP/2.0/UDP 192.168.1.58;rport;branch=z9hG4bKcsmbires Max-Forwards: 70 To: sip:ibc@sip.domain.net From: "Angel" sip:angel@sip.domain.net;tag=wddxn Call-ID: bdrmoffsihrozyj@192.168.1.58 CSeq: 636 SUBSCRIBE Contact: sip:angel@192.168.1.58 Accept: application/pidf+xml Event: presence Expires: 30 User-Agent: Twinkle/1.1alpha2 Content-Length: 0
# U 2007/09/10 17:54:08.296369 85.92.0.210:5060 -> 222.21.235.18:5060 SIP/2.0 202 OK Via: SIP/2.0/UDP 192.168.1.58;rport=5060;branch=z9hG4bKcsmbires;received=222.21.235.18 To: sip:ibc@sip.domain.net;tag=10.14184.1189439648.1 From: "Angel" sip:angel@sip.domain.net;tag=wddxn Call-ID: bdrmoffsihrozyj@192.168.1.58 CSeq: 636 SUBSCRIBE Expires: 30 Contact: sip:85.92.0.210 Server: OpenSER (1.2.2-notls (i386/linux)) Content-Length: 0
# U 2007/09/10 17:54:08.297746 85.92.0.210:5060 -> 222.21.235.18:5060 NOTIFY sip:angel@222.21.235.18:5060 SIP/2.0 Via: SIP/2.0/UDP 85.92.0.210;branch=z9hG4bKfaad.3f308931.0 To: sip:angel@sip.domain.net;tag=wddxn From: sip:ibc@sip.domain.net;tag=10.14184.1189439648.1 CSeq: 2 NOTIFY Call-ID: bdrmoffsihrozyj@192.168.1.58 Content-Length: 342 User-Agent: OpenSER (1.2.2-notls (i386/linux)) Max-Forwards: 70 Event: presence Contact: sip:85.92.0.210 Subscription-State: active;expires=30 Content-Type: application/pidf+xml ----------------------------------------------------------------------------------------------------------
And after 60 minutes (presence refresh in X-Lite) the following SUBSCRIBE from X-Lite is this sent. Note that: - This is a IN-DIALOG SUBSCRIBE (has totag and same callerd ID as before). - This in-dialog SUBSCRIBE hasn't "Route" header !!!!!!!!!!!
---------------------------------------------------------------------------------------------------------- # U 2007/09/10 17:54:35.390759 222.21.235.18:5060 -> 85.92.0.210:5060 SUBSCRIBE sip:85.92.0.210 SIP/2.0 Via: SIP/2.0/UDP 192.168.1.58;rport;branch=z9hG4bKpgezzksl Max-Forwards: 70 To: sip:ibc@sip.domain.net;tag=10.14184.1189439648.1 From: "Angel" sip:angel@sip.domain.net;tag=wddxn Call-ID: bdrmoffsihrozyj@192.168.1.58 CSeq: 638 SUBSCRIBE Contact: sip:angel@192.168.1.58 Accept: application/pidf+xml Event: presence Expires: 30 User-Agent: Twinkle/1.1alpha2 Content-Length: 0 ----------------------------------------------------------------------------------------------------------
So, because this second SUBSCRIBE hasn't a "Route" header the funcion "loose_route()" doesn't match it and it's routed as NOT-in-dialog message.
So, what to do??? I've a in-dialog message without "Route" header, so it's not routed by "loose_route()".
I've tryied with this:
if (loose_route() || has_totag()) {
but it generates a loop.
Does OpenSer store the SUBSCRIBE dialog info for 60 minutes? could it recognize this establishd dialog? or should I route this in-dialog message as NOT in-dialog?
Thanks for any explanation.