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 for every provisional response with SDP that it forwards. The implementation is not 100% correct in the sense that B2BUA should be using the same To tag for winning 200 OK as one for corresponding 183 (in my implementation that would differ). However it should not be a big deal since there will be only one 200 OK going from B2BUA, while tracking multiple concurrent early dialogs in B2BUA could be overkill.

As I said to you before forking and early dialog mechanism don't play together very well, so that in reality this feature is more useful to not confuse UAC for the cases when B2BUA is trying multiple destination sequentially, and two or more of them generate early media. However, in practice during my past 5 years of dealing with SIP I have not seen a single UA that had a problem with such scenario. In fact on contrary I am more worried that some UACs won't handle 183s/200 with different To tags within the same call correctly.

Please let me know if you have any questions or comments.

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:37:00 -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:
_______________________________________________
Semsdev mailing list
[email protected]
http://lists.iptel.org/mailman/listinfo/semsdev

Reply via email to