<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta name=Generator content="Microsoft Word 12 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
        {font-family:Consolas;
        panose-1:2 11 6 9 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";
        color:black;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
pre
        {mso-style-priority:99;
        mso-style-link:"Стандартный HTML Знак";
        margin:0cm;
        margin-bottom:.0001pt;
        font-size:10.0pt;
        font-family:"Courier New";
        color:black;}
span.EmailStyle17
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
span.HTML
        {mso-style-name:"Стандартный HTML Знак";
        mso-style-priority:99;
        mso-style-link:"Стандартный HTML";
        font-family:Consolas;
        color:black;}
span.EmailStyle20
        {mso-style-type:personal-reply;
        font-family:"Courier New";
        color:#1F497D;
        font-weight:normal;
        font-style:normal;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:2.0cm 42.5pt 2.0cm 3.0cm;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body bgcolor=white lang=RU link=blue vlink=purple><div class=WordSection1><p class=MsoNormal><span lang=EN-US style='font-family:"Courier New";color:#1F497D'>Hello Bogdan<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-family:"Courier New";color:#1F497D'><o:p>&nbsp;</o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-family:"Courier New";color:#1F497D'>And if I use in onreply_route <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-family:"Courier New";color:#1F497D'><o:p>&nbsp;</o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-family:"Courier New";color:#1F497D'>if (status=~&quot;200||18[0,3]&quot; &amp;&amp; $rm==&quot;INVITE&quot;) {<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-family:"Courier New";color:#1F497D'> if (t_was_cancelled()) {<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-family:"Courier New";color:#1F497D'>   exit;<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-family:"Courier New";color:#1F497D'>  }<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-family:"Courier New";color:#1F497D'>}<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-family:"Courier New";color:#1F497D'><o:p>&nbsp;</o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-family:"Courier New";color:#1F497D'>This will help?<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-family:"Courier New";color:#1F497D'><o:p>&nbsp;</o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-family:"Courier New";color:#1F497D'><o:p>&nbsp;</o:p></span></p><div><div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm'><p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:"Tahoma","sans-serif";color:windowtext'>From:</span></b><span lang=EN-US style='font-size:10.0pt;font-family:"Tahoma","sans-serif";color:windowtext'> Bogdan-Andrei Iancu [mailto:bogdan@opensips.org] <br><b>Sent:</b> Wednesday, April 06, 2011 6:35 PM<br><b>To:</b> OpenSIPS users mailling list<br><b>Cc:</b> Denis Putyato<br><b>Subject:</b> Re: [OpenSIPS-Users] dialog and CANCEL<o:p></o:p></span></p></div></div><p class=MsoNormal><span lang=EN-US><o:p>&nbsp;</o:p></span></p><p class=MsoNormal>Hi Denis,<br><br>On 03/21/2011 01:55 PM, Denis Putyato wrote: <o:p></o:p></p><p class=MsoNormal><span lang=EN-US>Hello</span><o:p></o:p></p><p class=MsoNormal><span lang=EN-US>&nbsp;</span><o:p></o:p></p><p class=MsoNormal><span lang=EN-US>There is such scheme of call</span><o:p></o:p></p><p class=MsoNormal><span lang=EN-US>&nbsp;</span><o:p></o:p></p><p class=MsoNormal><span lang=EN-US>One gateway – 1.1.1.1</span><o:p></o:p></p><p class=MsoNormal><span lang=EN-US>Opensips – 2.2.2.2</span><o:p></o:p></p><p class=MsoNormal><span lang=EN-US>Another gateway – 3.3.3.3</span><o:p></o:p></p><p class=MsoNormal><span lang=EN-US>Calls from 1.1.1.1 to 3.3.3.3 through 2.2.2.2</span><o:p></o:p></p><p class=MsoNormal><span lang=EN-US>I use CDR_flag for accounting</span><o:p></o:p></p><p class=MsoNormal><span lang=EN-US>&nbsp;</span><o:p></o:p></p><p class=MsoNormal><span lang=EN-US>As you can see in testlog file, 1.1.1.1 trying cancel initial request by sending CANCEL, this CANCEL Opensips forwarding to 3.3.3.3 but from 3.3.3.3 Opensips receives 200 OK on INVITE. Because of this there is no CANCEL of the dialog on Opensips and after 1800 sec (see “default_timeout”) I have a CDR record in Opensips with duration of 1800 sec.</span><o:p></o:p></p><p class=MsoNormal><span lang=EN-US>&nbsp;</span><o:p></o:p></p><p class=MsoNormal><span lang=EN-US>The question. Why does Opensips forward 200 OK from 3.3.3.3 to 1.1.1.1 when initial request was cancelled, and why Opensips makes accounting dialog when initial request was cancelled?&nbsp; </span><o:p></o:p></p><p class=MsoNormal><span style='font-size:12.0pt;font-family:"Times New Roman","serif"'>RFC3261 says a proxy must forward all 2xx replies (disregarding the transaction state), just to solve the possible race between CANCEL and 2xx -&gt; such race must be handled by end point and not by proxy.<br><br>So, it your case, if caller sent a CANCEL but still receives a 200 (callee picked up before actually receiving the CANCEL from caller), the caller must sent a BYE and the callee should send a negative reply to the CANCEL.<br><br>So, it is a bug in the caller device.<br><br>Regards,<br>Bogdan<br><br><br><o:p></o:p></span></p><pre>-- <o:p></o:p></pre><pre>Bogdan-Andrei Iancu<o:p></o:p></pre><pre>OpenSIPS eBootcamp - 2nd of May 2011<o:p></o:p></pre><pre>OpenSIPS solutions and &quot;know-how&quot;<o:p></o:p></pre></div></body></html>