Maxim Sobolev wrote:
Iñaki Baz Castillo wrote:
El Viernes, 28 de Noviembre de 2008, Iñaki Baz Castillo escribió:

If you want we could ask in SIP-implementors, but I've already debated
about this exact question there and the conclusion was that the SDP cannot
change during the same early-dialog (183...200 with same To_tag).

Best regards.

I've already open a new thread in SIP-implementors. I hope I could convince you ;)

https://lists.cs.columbia.edu/pipermail/sip-implementors/2008-November/020994.html

Iñaki,

You can try the attached patch, which makes B2BUA use different To tag

OOPS, sorry, the patch in the previous message is incomplete. Attached is the correct one.

Regards,
--
Maksym Sobolyev
Sippy Software, Inc.
Internet Telephony (VoIP) Experts
T/F: +1-646-651-1110
Web: http://www.sippysoft.com
MSN: [EMAIL PROTECTED]
Skype: SippySoft
Index: UasStateRinging.py
===================================================================
RCS file: 
/home/ncvs/ssp_livecd/SSP/ssp_port/files/ssp/sippy/UasStateRinging.py,v
retrieving revision 1.12
diff -d -u -r1.12 UasStateRinging.py
--- UasStateRinging.py  24 Sep 2008 23:18:56 -0000      1.12
+++ UasStateRinging.py  4 Dec 2008 07:53:07 -0000
@@ -27,6 +27,12 @@
                 if body != None and self.ua.on_local_sdp_change != None and 
body.needs_update:
                     self.ua.on_local_sdp_change(body, lambda x: 
self.ua.recvEvent(event))
                     return None
+            if self.ua.lSDP != None:
+                # If we send 180 after 183 or different 183 after another
+                # 183, update local session tag, so that different early
+                # dialogs will get different dialog ids.
+                self.ua.uasResp.getHFBody('to').setTag('%s-%d' % 
(self.ua.lTag, self.ua.lTagGen))
+                self.ua.lTagGen += 1
             self.ua.lSDP = body
             if self.ua.p1xx_ts == None:
                 self.ua.p1xx_ts = event.rtime
@@ -39,6 +45,12 @@
             if body != None and self.ua.on_local_sdp_change != None and 
body.needs_update:
                 self.ua.on_local_sdp_change(body, lambda x: 
self.ua.recvEvent(event))
                 return None
+            if self.ua.lTagGen > 0 and self.ua.lSDP != None and 
str(self.ua.lSDP) != str(body):
+                # If session description in 200 differs from session
+                # description in preceding 1xx update local session tag
+                # to make UAC aware of that.
+                self.ua.uasResp.getHFBody('to').setTag('%s-%d' % 
(self.ua.lTag, self.ua.lTagGen))
+                self.ua.lTagGen += 1
             self.ua.lSDP = body
             self.ua.sendUasResponse(code, reason, body, self.ua.lContact)
             if self.ua.expire_timer != None:
Index: UA.py
===================================================================
RCS file: /home/ncvs/ssp_livecd/SSP/ssp_port/files/ssp/sippy/UA.py,v
retrieving revision 1.27
diff -d -u -r1.27 UA.py
--- UA.py       15 Oct 2008 08:58:20 -0000      1.27
+++ UA.py       4 Dec 2008 07:53:07 -0000
@@ -45,6 +45,7 @@
     dead_cbs = None
     rCSeq = None
     lTag = None
+    lTagGen = 0
     lUri = None
     rUri = None
     cId = None
_______________________________________________
Semsdev mailing list
[email protected]
http://lists.iptel.org/mailman/listinfo/semsdev

Reply via email to