<HTML dir=ltr><HEAD><TITLE>Re: [OpenSIPS-Users] Opensips should reply "SIP/2.0 200 canceling" to CANCEL after forwarding ? or wait after reply</TITLE>
<META http-equiv=Content-Type content="text/html; charset=unicode">
<META content="MSHTML 6.00.6001.18148" name=GENERATOR></HEAD>
<BODY>
<DIV id=idOWAReplyText49697 dir=ltr>
<DIV dir=ltr><FONT face="Courier New" color=#000000 size=2>There was a lot of action taking place in the same second in this SIP glare condition.</FONT></DIV>
<DIV dir=ltr><FONT face="Courier New" color=#000000 size=2></FONT>&nbsp;</DIV>
<DIV dir=ltr><FONT face="Courier New" color=#000000 size=2>SIP/2.0 487 Request Terminated<BR>Via: SIP/2.0/UDP 88.88.88.88:5060;branch=z9hG4bKnvvm4u3018h1if0210g1.1<BR>Call-ID: SDhbtm701-2ddaa941b6ca35682061bd51f5f7b29d-agt38s3<BR>From: &lt;sip:7083596365@sipgw14.com;user=phone&gt;;tag=SDhbtm701-9270<BR>To: &lt;sip:7260711@10.10.10.1:5060;user=phone&gt;;tag=db962f7fab4d65668601cd9ff01c7d01-265f<BR>CSeq: 1 INVITE<BR>Server: OpenSIPS (1.5.1-notls (x86_64/linux))<BR>Content-Length: 0</FONT></DIV></DIV>
<DIV dir=ltr>&nbsp;</DIV>
<DIV dir=ltr>
<DIV dir=ltr><FONT face="Courier New" size=2>My concern is that Opensips would not take the initiative to confirm a call is terminated sending "487"&nbsp;if it does not have the confirmation from the terminating&nbsp;UA. </FONT></DIV>
<DIV dir=ltr><FONT face="Courier New" size=2></FONT>&nbsp;</DIV></DIV>
<DIV dir=ltr><BR>
<HR tabIndex=-1>
<FONT face=Tahoma size=2><B>From:</B> Bogdan-Andrei Iancu [mailto:bogdan@voice-system.ro]<BR><B>Sent:</B> Fri 25/06/2010 8:11 AM<BR><B>To:</B> Julien Chavanton<BR><B>Cc:</B> OpenSIPS users mailling list<BR><B>Subject:</B> Re: [OpenSIPS-Users] Opensips should reply "SIP/2.0 200 canceling" to CANCEL after forwarding ? or wait after reply<BR></FONT><BR></DIV>
<DIV>
<P><FONT size=2>Hi Julien,<BR><BR>The only case when the 487 is generated by opensips is when a CANCEL is<BR>received for an INVITE branch which did not received yet no reply. In<BR>such a case opensips will inject a 487 reply on that branch to<BR>compensate to lack of reply from the downstream&nbsp; party.<BR><BR>The order of the requests in siptrace is really irrelevant (for &lt; 1s<BR>intervals) as it is strongly affected by the parallel processing in<BR>opensips and by the DB op (to insert the trace).<BR><BR>Could you post the whole 487 reply from DB ? My guess the 487 is a<BR>result of a race between the incoming CANCEL from caller and the first<BR>100 reply from callee.<BR><BR>Regards,<BR>Bogdan<BR><BR>Julien Chavanton wrote:<BR>&gt; Hi thanks for this feed back, unfortunatly I do nto have a full trace<BR>&gt; but I am using sip_trace data from database.<BR>&gt;&nbsp;<BR>&gt; This is waht I from on this call-id, it seems like an isolated case,<BR>&gt; but I am wandering where is the "487" triggered<BR>&gt;&nbsp;<BR>&gt; 88.88.88.88(UA) --&gt;&nbsp; 10.10.10.1(opensips) --&gt; 10.2.2.22(UA)<BR>&gt;&nbsp;<BR>&gt; I am handling CANCEL like this, could t_relay() trigger this call ?<BR>&gt;&nbsp;<BR>&gt;&nbsp; ####---&gt; Handling CANCEL<BR>&gt;&nbsp; if ( is_method("CANCEL") ) {<BR>&gt;&nbsp;&nbsp;&nbsp; if ( t_check_trans() ){<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t_relay();<BR>&gt;&nbsp;&nbsp;&nbsp; }<BR>&gt;&nbsp;&nbsp;&nbsp; exit;<BR>&gt;&nbsp; }<BR>&gt;&nbsp;<BR>&gt; +---------------------+--------+--------+----------------------+----------------------+----------------+<BR>&gt; | time_stamp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | method | status | fromip&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<BR>&gt; toip&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | fromtag&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<BR>&gt; +---------------------+--------+--------+----------------------+----------------------+----------------+<BR>&gt; | 2010-05-26 17:52:52 | INVITE |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | udp:88.88.88.88:5060 |<BR>&gt; udp:10.10.10.1:5060&nbsp; | SDhbtm701-9270 |<BR>&gt; | 2010-05-26 17:52:52 | INVITE |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | udp:88.88.88.88:5060 |<BR>&gt; udp:10.10.10.1:5060&nbsp; | SDhbtm701-9270 |<BR>&gt; | 2010-05-26 17:52:53 | INVITE |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | udp:10.10.10.1:5060&nbsp; |<BR>&gt; udp:10.2.2.22:5060&nbsp;&nbsp; | SDhbtm701-9270 |<BR>&gt; | 2010-05-26 17:52:59 | CANCEL |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | udp:88.88.88.88:5060 |<BR>&gt; udp:10.10.10.1:5060&nbsp; | SDhbtm701-9270 |<BR>&gt; | 2010-05-26 17:52:59 | INVITE | 100&nbsp;&nbsp;&nbsp; | udp:10.2.2.22:5060&nbsp;&nbsp; |<BR>&gt; udp:10.10.10.1:5060&nbsp; | SDhbtm701-9270 |<BR>&gt; | 2010-05-26 17:52:59 | CANCEL | 200&nbsp;&nbsp;&nbsp; | udp:10.10.10.1:5060&nbsp; |<BR>&gt; udp:88.88.88.88:5060 | SDhbtm701-9270 |<BR>&gt; | 2010-05-26 17:52:59 |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | 100&nbsp;&nbsp;&nbsp; | udp:10.2.2.22:5060&nbsp;&nbsp; |<BR>&gt; udp:10.10.10.1:5060&nbsp; | SDhbtm701-9270 |<BR>&gt; | 2010-05-26 17:52:59 | INVITE |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | udp:88.88.88.88:5060 |<BR>&gt; udp:10.10.10.1:5060&nbsp; | SDhbtm701-9270 |<BR>&gt; | 2010-05-26 17:52:59 | INVITE | 200&nbsp;&nbsp;&nbsp; | udp:10.2.2.22:5060&nbsp;&nbsp; |<BR>&gt; udp:10.10.10.1:5060&nbsp; | SDhbtm701-9270 |<BR>&gt; | 2010-05-26 17:52:59 | CANCEL |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | udp:10.10.10.1:5060&nbsp; |<BR>&gt; udp:10.2.2.22:5060&nbsp;&nbsp; | SDhbtm701-9270 |<BR>&gt; | 2010-05-26 17:52:59 | INVITE | 487&nbsp;&nbsp;&nbsp; | udp:10.10.10.1:5060&nbsp; |<BR>&gt; udp:88.88.88.88:5060 | SDhbtm701-9270 |<BR>&gt; | 2010-05-26 17:52:59 |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | 200&nbsp;&nbsp;&nbsp; | udp:10.2.2.22:5060&nbsp;&nbsp; |<BR>&gt; udp:10.10.10.1:5060&nbsp; | SDhbtm701-9270 |<BR>&gt; | 2010-05-26 17:52:59 | INVITE | 200&nbsp;&nbsp;&nbsp; | udp:10.10.10.1:5060&nbsp; |<BR>&gt; udp:88.88.88.88:5060 | SDhbtm701-9270 |<BR>&gt; | 2010-05-26 17:53:11 | ACK&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | udp:88.88.88.88:5060 |<BR>&gt; udp:10.10.10.1:5060&nbsp; | SDhbtm701-9270 |<BR>&gt; | 2010-05-26 17:53:27 | INVITE | 200&nbsp;&nbsp;&nbsp; | udp:10.2.2.22:5060&nbsp;&nbsp; |<BR>&gt; udp:10.10.10.1:5060&nbsp; | SDhbtm701-9270 |<BR>&gt; | 2010-05-26 17:53:27 |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | 200&nbsp;&nbsp;&nbsp; | udp:10.2.2.22:5060&nbsp;&nbsp; |<BR>&gt; udp:10.10.10.1:5060&nbsp; | SDhbtm701-9270 |<BR>&gt; | 2010-05-26 18:13:19 | BYE&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | udp:10.2.2.22:5060&nbsp;&nbsp; |<BR>&gt; udp:10.10.10.1:5060&nbsp; | 1190677408&nbsp;&nbsp;&nbsp;&nbsp; |<BR>&gt; | 2010-05-26 18:13:20 | BYE&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | udp:10.2.2.22:5060&nbsp;&nbsp; |<BR>&gt; udp:10.10.10.1:5060&nbsp; | 1190677408&nbsp;&nbsp;&nbsp;&nbsp; |<BR>&gt; | 2010-05-26 18:13:20 | BYE&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | udp:10.10.10.1:5060&nbsp; |<BR>&gt; udp:88.88.88.88:5060 | 1190677408&nbsp;&nbsp;&nbsp;&nbsp; |<BR>&gt; | 2010-05-26 18:13:40 | BYE&nbsp;&nbsp;&nbsp; | 481&nbsp;&nbsp;&nbsp; | udp:88.88.88.88:5060 |<BR>&gt; udp:10.10.10.1:5060&nbsp; | 1190677408&nbsp;&nbsp;&nbsp;&nbsp; |<BR>&gt; | 2010-05-26 18:13:40 |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | 481&nbsp;&nbsp;&nbsp; | udp:88.88.88.88:5060 |<BR>&gt; udp:10.10.10.1:5060&nbsp; | 1190677408&nbsp;&nbsp;&nbsp;&nbsp; |<BR>&gt; | 2010-05-26 18:13:40 | BYE&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | udp:10.2.2.22:5060&nbsp;&nbsp; |<BR>&gt; udp:10.10.10.1:5060&nbsp; | 1190677408&nbsp;&nbsp;&nbsp;&nbsp; |<BR>&gt; | 2010-05-26 18:13:40 | BYE&nbsp;&nbsp;&nbsp; | 481&nbsp;&nbsp;&nbsp; | udp:10.10.10.1:5060&nbsp; |<BR>&gt; udp:10.2.2.22:5060&nbsp;&nbsp; | 1190677408&nbsp;&nbsp;&nbsp;&nbsp; |<BR>&gt; +---------------------+--------+--------+----------------------+----------------------+----------------+<BR>&gt;&nbsp;<BR>&gt;<BR>&gt; ------------------------------------------------------------------------<BR>&gt; *From:* Bogdan-Andrei Iancu [<A href="mailto:bogdan@voice-system.ro">mailto:bogdan@voice-system.ro</A>]<BR>&gt; *Sent:* Mon 21/06/2010 5:09 PM<BR>&gt; *To:* OpenSIPS users mailling list<BR>&gt; *Cc:* Julien Chavanton<BR>&gt; *Subject:* Re: [OpenSIPS-Users] Opensips should reply "SIP/2.0 200<BR>&gt; canceling" to CANCEL after forwarding ? or wait after reply<BR>&gt;<BR>&gt; Hi Julien,<BR>&gt;<BR>&gt; I doubt opensips generates a 487 Request terminated for an INVITE when<BR>&gt; the CANCEL is passing through - the 497 is end to end, not hop by hop<BR>&gt; (as the CANCEL), So, the 487 is generated by callee and opensips simply<BR>&gt; relays it back.<BR>&gt;<BR>&gt; Regards,<BR>&gt; Bogdan<BR>&gt;<BR>&gt; Julien Chavanton wrote:<BR>&gt; &gt;<BR>&gt; &gt; Hi, regarding handling of CANCEL request,<BR>&gt; &gt;<BR>&gt; &gt; Please correct me if I am wrong,<BR>&gt; &gt;<BR>&gt; &gt; I have glare condition on how Opensips handled Cancel requests.<BR>&gt; &gt; The problem is taht Opensips respond "487 Request terminated" strait<BR>&gt; &gt; after forwarding the CANCEL but it does not know if the targe UA will<BR>&gt; &gt; accept it.<BR>&gt; &gt;<BR>&gt; &gt; I think it should wait after the target UA to reply before, as this<BR>&gt; &gt; can create out of sync situation if there is a problem with the target.<BR>&gt; &gt; in this senario the "200 OK" is&nbsp; received at the same time as the<BR>&gt; &gt; CANCEL is sent, in this case the target UA as the right to ignore the<BR>&gt; &gt; CANCEL because it as generated a final response.<BR>&gt; &gt;<BR>&gt; &gt;<BR>&gt; &gt; UA -----&gt; CANCEL ------------------------&gt; osips<BR>&gt; &gt; UA &lt;------ SIP/2.0 200 canceling --------&gt; osips<BR>&gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; osips &lt;--- 200 OK &lt;-- UA<BR>&gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; osips ---&gt; CANCEL --&gt; UA<BR>&gt; &gt; UA &lt;---- SIP/2.0 487 Request Terminated -&gt; osips<BR>&gt; &gt;<BR>&gt;<BR>&gt; --<BR>&gt; Bogdan-Andrei Iancu<BR>&gt; OpenSIPS Bootcamp<BR>&gt; 20 - 24 September 2010, Frankfurt, Germany<BR>&gt; www.voice-system.ro<BR>&gt;<BR><BR><BR>--<BR>Bogdan-Andrei Iancu<BR>OpenSIPS Bootcamp<BR>20 - 24 September 2010, Frankfurt, Germany<BR>www.voice-system.ro<BR><BR><BR></FONT></P></DIV></BODY></HTML>