Hi Andrei,<br><br>Thanks for your availability to help me... <br>Note that this situation only occurs if the CANCEL message is originated a few moments after the INVITE. I think that the transaction from the INVITE is not&nbsp; yet completely created so when the CANCEL is received it doesn&#39;t match any transaction (t_lookup_request: no transaction found).<br>
I send in attachment the wireshark log where you can the network traces that you referred. <br><br>PS: the first message was rejected by the list as the message was to big....<br><br>Best Regards,<br><br><div class="gmail_quote">
On Sat, Mar 8, 2008 at 12:39 AM, Andrei Pelinescu-Onciul &lt;<a href="mailto:andrei@iptel.org">andrei@iptel.org</a>&gt; wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div><div></div><div class="Wj3C7c">On Mar 06, 2008 at 17:45, Nuno Ribeiro &lt;<a href="mailto:nribeiro82@gmail.com">nribeiro82@gmail.com</a>&gt; wrote:<br>
&gt; Hi all,<br>
&gt;<br>
&gt; I&#39;m facing a problem &nbsp;with &quot;early CANCEL&#39;s&quot; such the one described in this<br>
&gt; thread. The scenario is the following &nbsp;one:<br>
&gt;<br>
&gt; A PSTN call to a SIP phone. When the PSTN decides to cancel the call only a<br>
&gt; right after initiating, the PSTN will send the CANCEL message to the SER but<br>
&gt; this is discarded and not forwarded to the correct path to the SIP Phone. So<br>
&gt; what happens is that we have a ghost call.... The PSTN has already canceled<br>
&gt; the call but the SIP phone continues to ring.<br>
&gt;<br>
&gt; The code that I have in the SER script is really simple and the behavior to<br>
&gt; a CANCEL is the same as to a INVITE:<br>
&gt;<br>
&gt; if(subst_uri(&#39;/^sip:(\+[0-9]+)@<br>
&gt; <a href="http://192.168.20.69.*user=phone$/sip:%5C1@xlab.com/i%27%29%29%7B" target="_blank">192.168.20.69.*user=phone$/sip:\1@xlab.com/i&#39;)){</a><br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;record_route();<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;loose_route();<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;t_relay_to_udp(&quot;<a href="http://192.168.20.5" target="_blank">192.168.20.5</a>&quot;, &quot;5060&quot;);<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;break;<br>
&gt; }<br>
&gt; In the log file I see that:<br>
&gt; RFC3261 transaction matching failed<br>
&gt; t_lookup_request: no transaction found<br>
&gt; e2e_cancel: e2e cancel proceeding<br>
&gt;<br>
&gt;<br>
&gt; During this thread I saw that a &nbsp;CANCEL handling tm option was decided to be<br>
&gt; created. Maybe this option can help me to solve the ghost call issue. How<br>
&gt; can I change the default behavior ? &nbsp;this feature is available &nbsp;from which<br>
&gt; SER release ?<br>
<br>
</div></div>The option is unmatched_cancel and is present for ser 2.1 (cvs head).<br>
However what this does is select between dropping unmatched cancels,<br>
forwarding them statelessly or statefully.<br>
Older ser versions always forward the cancel statefully, which is what<br>
you want in most cases (including yours).<br>
<br>
It&#39;s strage that the cancel doesn&#39;t seem to match the invite transaction<br>
in your case.<br>
If you would send me some networks dumps with the invite and the cancel<br>
I could tell you more.<br>
<br>
<br>
Andrei<br>
<div class="Ih2E3d"><br>
<br>
&gt;<br>
&gt; Any idea how I can solve this isse?<br>
&gt;<br>
&gt; Thanks in advance.<br>
&gt;<br>
&gt; Best Regards<br>
&gt;<br>
&gt; On Thu, Mar 29, 2007 at 6:19 PM, Jiri Kuthan &lt;<a href="mailto:jiri@iptel.org">jiri@iptel.org</a>&gt; wrote:<br>
&gt;<br>
&gt; &gt; At 15:58 26/02/2007, Klaus Darilion wrote:<br>
&gt; &gt; &gt;FYI: This is the pragmatic approach how openser users handle the problem:<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt;1. drop the CANCEL if there is no corresponding INVITE transaction. The<br>
&gt; &gt; UAC must retransmit the CANCEL and meanwhile there should be the INVITE<br>
&gt; &gt; transaction. (since 1.0)<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt;if ( is_method(&quot;CANCEL&quot;) &amp;&amp; !t_check_trans() ) {<br>
&gt; &gt; &gt; &nbsp;# CANCEL without matching INVITE transaction, ignore!<br>
&gt; &gt; &gt; &nbsp;# May happen if the INVITE is slower than the CANCEL.<br>
&gt; &gt; &gt; &nbsp;# Ignore the CANCEL, as the client will retransmit it, and maybe<br>
&gt; &gt; &gt; &nbsp;# the INVITE transaction is already created for the next CANCEL<br>
&gt; &gt; &gt; &nbsp;xlog(&quot;L_WARN&quot;,&quot;$ci CANCEL without matching transaction ... ignore\n&quot;);<br>
&gt; &gt; &gt; &nbsp;exit;<br>
&gt; &gt; &gt;}<br>
&gt; &gt;<br>
&gt; &gt; which does not appear really reboot-safe to me. What it can lead to that<br>
&gt; &gt; ser reboot<br>
&gt; &gt; affects pending calls in that cancels are never forwarded and ringing<br>
&gt; &gt; phones will<br>
&gt; &gt; never stop ringing -- not very pleasant indeed, is it.<br>
&gt; &gt;<br>
&gt; &gt; -jiri<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt; --<br>
</div>&gt; &gt; Jiri Kuthan &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<a href="http://iptel.org/%7Ejiri/" target="_blank">http://iptel.org/~jiri/</a> &lt;<a href="http://iptel.org/%7Ejiri/" target="_blank">http://iptel.org/%7Ejiri/</a>&gt;<br>
<div><div></div><div class="Wj3C7c">&gt; &gt;<br>
&gt; &gt; _______________________________________________<br>
&gt; &gt; Serusers mailing list<br>
&gt; &gt; <a href="mailto:Serusers@lists.iptel.org">Serusers@lists.iptel.org</a><br>
&gt; &gt; <a href="http://lists.iptel.org/mailman/listinfo/serusers" target="_blank">http://lists.iptel.org/mailman/listinfo/serusers</a><br>
&gt; &gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; --<br>
&gt; Nuno Ribeiro<br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br>Nuno Ribeiro