Hi Timo,<div><br></div><div>Thanks for the detailed feedback.  Agreed that it is necessary and we will incorporate a basic attempt of this into the dialog_2 module.<br><br></div><div>Regards</div><div>Richard.</div><div><br>
</div><div><br><div class="gmail_quote">On 16 September 2011 12:42, Timo Reimann <span dir="ltr">&lt;<a href="mailto:timo.reimann@1und1.de">timo.reimann@1und1.de</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
Hi Richard,<br>
<div class="im"><br>
<br>
On 15.09.2011 16:33, Richard Good wrote:<br>
&gt; I am working with Jason on implementing the basics for the dialog_2 module.<br>
&gt;<br>
&gt; I&#39;ve got a question concerning the concurrently confirmed call scenario.<br>
&gt;  If multiple 200 OKs are received very close to the same time, the new<br>
&gt; dialog design proposal says we should create a separate dialog_in<br>
&gt; structure and assign a different DID to it, essentially creating<br>
&gt; multiple dialog_in structures and multiple dialog_out structures.<br>
&gt;<br>
&gt; Should we not just absorb/ignore the subsequent 200 OK&#39;s in this case?<br>
&gt;  I would imagine that if a SIP client received multiple 200 OKs it would<br>
&gt; ACK the first and ignore the rest as it is effectively already in a call<br>
&gt; (haven&#39;t checked the specs for this yet).  So why should we track this<br>
&gt; in the dialog module?  If we just absorb/ignore the subsequent 200 OK<br>
&gt; the client sending this 200 OK would eventually timeout due to no ACK.<br>
<br>
</div>UACes receiving multiple 200 OK responses to the same INVITE request are<br>
required to ACK both. From there, it is completely up to the UAC how to<br>
deal with having two confirmed dialogs. While sending a BYE to one of<br>
the dialogs is a valid (and likely) option, it could just as well put<br>
one of them on hold, do nothing, or something completely different we<br>
cannot presume. That&#39;s the reason why you cannot absorb/ignore<br>
subsequent 200 OK responses but need to maintain and process two<br>
distinct dialogs.<br>
<br>
See also Jonathan Rosenberg&#39;s response to this question on the<br>
sip-implementors mailing list:<br>
<br>
<a href="https://lists.cs.columbia.edu/pipermail/sip-implementors/2001-April/000935.html" target="_blank">https://lists.cs.columbia.edu/pipermail/sip-implementors/2001-April/000935.html</a><br>
<br>
Back in March 2010, I discussed this very issue on the sr-dev mailing<br>
list, primarily with Iņaki. If you like to dig into the details, here&#39;s<br>
the link:<br>
<br>
<a href="http://lists.sip-router.org/pipermail/sr-dev/2010-March/006631.html" target="_blank">http://lists.sip-router.org/pipermail/sr-dev/2010-March/006631.html</a><br>
<br>
<br>
HTH,<br>
<br>
--Timo<br>
<div class="im"><br>
<br>
<br>
&gt; On 7 September 2011 12:50, Jason Penton &lt;<a href="mailto:jason.penton@gmail.com">jason.penton@gmail.com</a><br>
</div><div class="im">&gt; &lt;mailto:<a href="mailto:jason.penton@gmail.com">jason.penton@gmail.com</a>&gt;&gt; wrote:<br>
&gt;<br>
&gt;     Great, thanks Timo.<br>
&gt;<br>
&gt;     We&#39;re going to go ahead and see what we can come up with. We are<br>
&gt;     initially thinking of building a new module from scratch, obv. with<br>
&gt;     a lot of reuse from the original dialog module. Our goal then is to<br>
&gt;     get all the correct data structures in place (in and out tables,<br>
&gt;     etc) and being built up correctly using a state machine. Once we&#39;re<br>
&gt;     are there we will create a branch for everyone else to help and<br>
&gt;     provide feedback.<br>
&gt;<br>
&gt;     We will def. need help when it comes to termination of early dialog,<br>
&gt;     etc - but I think we will get a very good start in.<br>
&gt;<br>
&gt;     Cheers<br>
&gt;     Jason<br>
&gt;<br>
&gt;<br>
&gt;     On Wed, Sep 7, 2011 at 11:40 AM, Timo Reimann &lt;<a href="mailto:timo.reimann@1und1.de">timo.reimann@1und1.de</a><br>
</div><div class="im">&gt;     &lt;mailto:<a href="mailto:timo.reimann@1und1.de">timo.reimann@1und1.de</a>&gt;&gt; wrote:<br>
&gt;<br>
&gt;         On 07.09.2011 11:22, Timo Reimann wrote:<br>
&gt;         &gt; If you find more points to discuss, I (and Iņaki and others<br>
&gt;         possibly<br>
&gt;         &gt; too) would be glad to share in. In addition, I think that<br>
&gt;         opening up<br>
&gt;         &gt; another branch for the new dialog module at a rather early<br>
&gt;         stage of<br>
&gt;         &gt; development might be a good idea in order to get more eyes on<br>
&gt;         the code.<br>
&gt;<br>
&gt;         One more comment: If the new implementation gives you an<br>
&gt;         opportunity to<br>
&gt;         redo the reference counting portion of the module, I suggest to<br>
&gt;         take it.<br>
&gt;         Reference counting management has grown into the most<br>
&gt;         complicated part<br>
&gt;         of the module, and thus can surely benefit from a new, fresh<br>
&gt;         approach.<br>
&gt;<br>
&gt;<br>
&gt;         --Timo<br>
&gt;<br>
&gt;         _______________________________________________<br>
&gt;         sr-dev mailing list<br>
</div>&gt;         <a href="mailto:sr-dev@lists.sip-router.org">sr-dev@lists.sip-router.org</a> &lt;mailto:<a href="mailto:sr-dev@lists.sip-router.org">sr-dev@lists.sip-router.org</a>&gt;<br>
<div class="im">&gt;         <a href="http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev" target="_blank">http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev</a><br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt;     _______________________________________________<br>
&gt;     sr-dev mailing list<br>
</div>&gt;     <a href="mailto:sr-dev@lists.sip-router.org">sr-dev@lists.sip-router.org</a> &lt;mailto:<a href="mailto:sr-dev@lists.sip-router.org">sr-dev@lists.sip-router.org</a>&gt;<br>
<div><div></div><div class="h5">&gt;     <a href="http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev" target="_blank">http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev</a><br>
</div></div></blockquote></div><br></div>