<br><br><div><span class="gmail_quote">2007/8/3, Olaf Bergmann &lt;<a href="mailto:Olaf.Bergmann@freenet-ag.de">Olaf.Bergmann@freenet-ag.de</a>&gt;:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
samuel wrote:<br>&gt; inline...<br>&gt;<br>&gt; 2007/8/3, Olaf Bergmann &lt;<a href="mailto:Olaf.Bergmann@freenet-ag.de">Olaf.Bergmann@freenet-ag.de</a><br>&gt; &lt;mailto:<a href="mailto:Olaf.Bergmann@freenet-ag.de">Olaf.Bergmann@freenet-ag.de
</a>&gt;&gt;:<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; Cesc Santa wrote:<br>&gt;<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt; I am doing some tests and it is not really a problem ... but maybe<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt; someone has a better idea. In my configuration, the first 200 OK
<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt; received is forwarded to the caller and the whole SIP session setup<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt; (caller + 1st callee).<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt; Next 200 OKs are also delivered to the caller,<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; That is the correct behavior of a SIP proxy.
<br>&gt;<br>&gt;<br>&gt; I think the proper forking behaviour is to send a CANCEL to all branches<br>&gt; upon receiving a 200 from one of them and I think that SER does this<br>&gt; automatically... isn&#39;t it??<br><br>
Correct: if you used append_branch (IIRC you did) the call leg will<br>be canceled by SER. But as there is a race condition due to network<br>latency, a 200 OK might have been sent by the receiving UA before<br>the CANCEL was received.
</blockquote><div><br>You&#39;re totally right! I was speaking about the&nbsp; written standard.... <br></div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt; who happily ignores them ...<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; That is broken behavior of a SIP UA.<br>&gt;<br>&gt;<br>&gt; I think it&#39;s not specified what to do when a UA receives a second&nbsp;&nbsp;200<br>&gt; OK.... it can safely ignore it, it can present a mesage to the user, it
<br>&gt; can try to mix the different audio streams, it can create a second<br>&gt; dialog and put the first on hold, and more options.<br>&gt;<br>&gt; Try to look at HERP and &quot;early media and forking&quot; topics....
<br><br>No, this has nothing to do with HERFP but is a matter of forked<br>dialog-initiating requests as you have observed. A good UAC<br>implementation waits some time after having received the first 200<br>OK (and having sent the corresponding ACK) to handle subsequent 200
<br>responses for forked requests. After some time it obviously is<br>reasonable to drop incoming 200 responses (but notice: these<br>responses could be matched with an ongoing call so there are options<br>to deal with them instead of silently dropping).
</blockquote><div><br>Right. <br></div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt; it is the task of the 2nd (and 3rd, ... ) callee to at a
<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt; certain point give up and send a BYE, to which the caller replies with<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt; 481 no call leg ...<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt; It all works ... but, I wonder if ser could send CANCELs after<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt; receiving the 1st 200 OK ... if yes, how? :)
<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; No, you cannot CANCEL an INVITE after having received a final<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; response. This must be done by the caller after having sent the ACK.<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; The UAC you have used is broken. The callee&#39;s UA tries to deal with
<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; it and does the best it can. You should use a standards-compliant<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; SIP UA for your tests.<br>&gt;<br>&gt;<br>&gt; Hope I&#39;m right though I think it should work &quot;as it is&quot;&nbsp;&nbsp;;)<br><br>The bottom line is: SER cannot CANCEL branches after having seen an
<br>final response. If the calling UA does not handle them, the behavior<br>you observed is the best to achieve.<br><br>Regards,<br>Olaf</blockquote><div><br>Thanks!<br>Samuel.<br></div><br></div><br>