<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=us-ascii">
<meta name=Generator content="Microsoft Word 12 (filtered medium)">
<style>
<!--
 /* Font Definitions */
 @font-face
        {font-family:Wingdings;
        panose-1:5 0 0 0 0 0 0 0 0 0;}
@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;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
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;}
span.EmailStyle17
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;}
@page Section1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.Section1
        {page:Section1;}
-->
</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 lang=EN-US link=blue vlink=purple>

<div class=Section1>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>Bogdan,<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>I apologize for &#8216;beating a dead horse&#8217;.&nbsp; I get
that this is a frustration we&#8217;re stuck with for various reasons.&nbsp; <o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>I&#8217;ve been writing my Opensips config on a daily basis for
going on six months now, and there&#8217;s still a couple of &#8220;weird&#8221;
spots in my scripts that drive me nuts (I literally have a comment above this
code that says &#8220;NEEDS DEBUGGING&#8221;).&nbsp; <o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>For anyone interested in the topic, please understand that I
wrote this particular fix &#8216;under the gun&#8217;, we&#8217;d just launched
our product and a handful of our customers couldn&#8217;t receive calls from a
network we&#8217;re peered with because their proxy server fired off an
immediate reinvite and my system couldn&#8217;t accept it.&nbsp; This went so
far as the peered telco beginning to call me (unsuccessfully, of course! </span><span
style='font-size:11.0pt;font-family:Wingdings;color:#1F497D'>J</span><span
style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>) because
they were getting tickets from their users unable to contact mine.<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>Having said that, I was in a hurry, and came up with the code
below.&nbsp; I still to this day don&#8217;t understand why calling
t_check_trans() twice was necessary, but I can say that if I eliminate one of
them, the system breaks down.&nbsp; <o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>Any advice?&nbsp; Like any good IT/Developer type, I&#8217;d
like to totally understand what my script is doing </span><span
style='font-size:11.0pt;font-family:Wingdings;color:#1F497D'>J</span><span
style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>Cheers,<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>Jeff Kronlage<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>Data102<i><o:p></o:p></i></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p>&nbsp;</o:p></span></p>

<div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in'>

<p class=MsoNormal><b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>From:</span></b><span
style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>
users-bounces@lists.opensips.org [mailto:users-bounces@lists.opensips.org] <b>On
Behalf Of </b>Brett Nemeroff<br>
<b>Sent:</b> Tuesday, October 06, 2009 7:15 AM<br>
<b>To:</b> OpenSIPS users mailling list<br>
<b>Subject:</b> Re: [OpenSIPS-Users] Re-invite problem -&gt; 491 Request
Pending<o:p></o:p></span></p>

</div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal>Bogdan,<o:p></o:p></p>

<div>

<p class=MsoNormal>I presently record the 200 OK ACK in my ACC, but I don't
seem to actually utilize it for anything at present. If I did the fix jeff
mentioned, will I no longer get that ACK in ACC?<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

</div>

<div>

<p class=MsoNormal>so performing the t_check_trans() is faster than tm module's
built in matching? I'm not sure I get why this is faster. I would have thought
that the work t_check_trans does is similar to what the tm module already does.<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

</div>

<div>

<p class=MsoNormal>BTW ,is this a bug that is planned to be fixed? Or should I
just expect that this scripting fix be a regular part of my scripts (if so,
perhaps it should be in the example scripts?)<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

</div>

<div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

</div>

<div>

<p class=MsoNormal>Thanks,<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>Brett<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal style='margin-bottom:12.0pt'><o:p>&nbsp;</o:p></p>

<div>

<p class=MsoNormal>On Tue, Oct 6, 2009 at 8:01 AM, Bogdan-Andrei Iancu &lt;<a
href="mailto:bogdan@voice-system.ro">bogdan@voice-system.ro</a>&gt; wrote:<o:p></o:p></p>

<p class=MsoNormal>Hi Brett,<br>
<br>
This is an ancient topic that needs to be solved once for all. The<br>
bottom problem is that OpenSIPS / TM does try o match the 200OK ACK<br>
against the INVITE transaction - and it should not do that as 200OK ACK<br>
forms a separate transaction and it matches at dialog level, not<br>
transaction level. Because of this, the 200OK ACK matching is not<br>
reliable (especially if you do spirals on opensips) and it is also time<br>
consuming.<br>
<br>
Because of this, the 200OK ACK matching takes longer than processing of<br>
a re-INVITE and here comes the changing in order.<br>
<br>
IMO, this artificial / forced matching of 200 OK should be dropped.<br>
<br>
But there are 2 modules using this:<br>
ACC - for accounting ACK for 200 OK - not sure how many people do enable<br>
this<br>
OSP - no clue :D.....<br>
<br>
Regards,<br>
Bogdan<o:p></o:p></p>

<div>

<p class=MsoNormal><br>
Brett Nemeroff wrote:<br>
&gt; Jeff,<br>
&gt; Thanks for your reply. Is this in the loose route? or.. ? Does it<br>
&gt; break anything else? Bogdan, anyway you can explain what's going on<br>
&gt; here? :)<br>
&gt; -Brett<br>
&gt;<br>
&gt;<br>
&gt; On Mon, Oct 5, 2009 at 12:30 PM, Jeff Kronlage &lt;<a
href="mailto:jeff@data102.com">jeff@data102.com</a><o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>&gt; &lt;mailto:<a href="mailto:jeff@data102.com">jeff@data102.com</a>&gt;&gt;
wrote:<br>
&gt;<br>
&gt; &nbsp; &nbsp; Brett,<br>
&gt;<br>
&gt; &nbsp; &nbsp; I had this same exact problem. The solution was a little
clunky<br>
&gt; &nbsp; &nbsp; but sending the ACK out statelessly solves the problem.<br>
&gt;<br>
&gt; &nbsp; &nbsp; My code looks like:<br>
&gt;<br>
&gt; &nbsp; &nbsp; t_check_trans();<br>
&gt;<br>
&gt; &nbsp; &nbsp; if (is_method(&quot;ACK&quot;) &amp;&amp; !t_check_trans())
{<br>
&gt;<br>
&gt; &nbsp; &nbsp; if (!forward()) sl_reply_error();<br>
&gt;<br>
&gt; &nbsp; &nbsp; exit;<br>
&gt;<br>
&gt; &nbsp; &nbsp; }<br>
&gt;<br>
&gt; &nbsp; &nbsp; if (!t_relay()) sl_reply_error();<br>
&gt;<br>
&gt; &nbsp; &nbsp; I wish I could give a more techie explanation on why this
works &#8211;<br>
&gt; &nbsp; &nbsp; it was a hackjob answer for me. Bogdan posted an answer
perhaps a<br>
&gt; &nbsp; &nbsp; week ago that explained it a bit.<br>
&gt;<br>
&gt; &nbsp; &nbsp; Cheers,<br>
&gt;<br>
&gt; &nbsp; &nbsp; --<br>
&gt;<br>
&gt; &nbsp; &nbsp; Jeff Kronlage<br>
&gt;<br>
&gt; &nbsp; &nbsp; Senior IT Engineer, Data102<br>
&gt;<br>
&gt; &nbsp; &nbsp; 102 South Tejon, Suite #1250<br>
&gt;<br>
&gt; &nbsp; &nbsp; Colorado Springs, CO 80903<br>
&gt;<br>
&gt; &nbsp; &nbsp; (719) 387-0000 x 1335 direct<br>
&gt;<br>
&gt; &nbsp; &nbsp; (719) 578-8844 fax<br>
&gt;<o:p></o:p></p>

</div>

<p class=MsoNormal>&gt; &nbsp; &nbsp; <a href="mailto:jeff@data102.com">jeff@data102.com</a>
&lt;mailto:<a href="mailto:jeff@data102.com">jeff@data102.com</a>&gt; / <a
href="http://www.data102.com" target="_blank">http://www.data102.com</a><o:p></o:p></p>

<div>

<p class=MsoNormal>&gt;<br>
&gt; &nbsp; &nbsp; *From:* <a href="mailto:users-bounces@lists.opensips.org">users-bounces@lists.opensips.org</a><br>
&gt; &nbsp; &nbsp; &lt;mailto:<a href="mailto:users-bounces@lists.opensips.org">users-bounces@lists.opensips.org</a>&gt;<br>
&gt; &nbsp; &nbsp; [mailto:<a href="mailto:users-bounces@lists.opensips.org">users-bounces@lists.opensips.org</a><br>
&gt; &nbsp; &nbsp; &lt;mailto:<a href="mailto:users-bounces@lists.opensips.org">users-bounces@lists.opensips.org</a>&gt;]
*On Behalf Of *Brett<br>
&gt; &nbsp; &nbsp; Nemeroff<br>
&gt; &nbsp; &nbsp; *Sent:* Monday, October 05, 2009 9:51 AM<o:p></o:p></p>

</div>

<p class=MsoNormal>&gt; &nbsp; &nbsp; *To:* <a
href="mailto:users@lists.opensips.org">users@lists.opensips.org</a> &lt;mailto:<a
href="mailto:users@lists.opensips.org">users@lists.opensips.org</a>&gt;<o:p></o:p></p>

<div>

<div>

<p class=MsoNormal>&gt; &nbsp; &nbsp; *Subject:* [OpenSIPS-Users] Re-invite
problem -&gt; 491 Request Pending<br>
&gt;<br>
&gt; &nbsp; &nbsp; Hello All,<br>
&gt;<br>
&gt; &nbsp; &nbsp; I'm not sure where the problem is.. it's either my switch,
or it's<br>
&gt; &nbsp; &nbsp; the customer's box.<br>
&gt;<br>
&gt; &nbsp; &nbsp; What's happening is the customer sends a call. As soon as
the<br>
&gt; &nbsp; &nbsp; 200OK gets back to them, they re-invite.. very fast. The
reinvite<br>
&gt; &nbsp; &nbsp; occurs BEFORE the ACK for the 200OK makes it back to the
provider.<br>
&gt; &nbsp; &nbsp; Because of this, when the RE-INVITE hits the provider they
respond<br>
&gt; &nbsp; &nbsp; with &quot;491 Request Pending&quot;, in other words, I
can't process a<br>
&gt; &nbsp; &nbsp; re-invite because the last INVITE hasn't send me an ACK back
yet.<br>
&gt; &nbsp; &nbsp; This happens over.. and over.. and over.<br>
&gt;<br>
&gt; &nbsp; &nbsp; What I'm wondering is if there is a timer I can adjust for
this.<br>
&gt; &nbsp; &nbsp; Seems like OpenSIPs should know that the transaction is in a
state<br>
&gt; &nbsp; &nbsp; where there is a PENDING ACK and it shouldn't process the<br>
&gt; &nbsp; &nbsp; RE-INVITE quite yet (Request Queued?). Perhaps that isn't a
normal<br>
&gt; &nbsp; &nbsp; function of a Proxy. So I guess I'm looking for either a
timer<br>
&gt; &nbsp; &nbsp; adjustment or a way to insert some sorta delay (sounds like
a bad<br>
&gt; &nbsp; &nbsp; idea) to allow the ACK to traverse.<br>
&gt;<br>
&gt; &nbsp; &nbsp; The numbers are VERY close.. the ACK actually arrives at
timestamp<br>
&gt; &nbsp; &nbsp; 12.757073, but the INVITE goes to the provider at 12.755913.
So in<br>
&gt; &nbsp; &nbsp; other words, if the RE-INVITE occured 0.001161 seconds
later, this<br>
&gt; &nbsp; &nbsp; wouldn't happen. Seems like there should be something to
prevent<br>
&gt; &nbsp; &nbsp; these events? (A properly working UAC perhaps?!)<br>
&gt;<br>
&gt; &nbsp; &nbsp; Any ideas?<br>
&gt;<br>
&gt; &nbsp; &nbsp; Thanks,<br>
&gt;<br>
&gt; &nbsp; &nbsp; Brett<br>
&gt;<br>
&gt;<br>
&gt; &nbsp; &nbsp; _______________________________________________<br>
&gt; &nbsp; &nbsp; Users mailing list<o:p></o:p></p>

</div>

</div>

<p class=MsoNormal>&gt; &nbsp; &nbsp; <a href="mailto:Users@lists.opensips.org">Users@lists.opensips.org</a>
&lt;mailto:<a href="mailto:Users@lists.opensips.org">Users@lists.opensips.org</a>&gt;<o:p></o:p></p>

<div>

<p class=MsoNormal>&gt; &nbsp; &nbsp; <a
href="http://lists.opensips.org/cgi-bin/mailman/listinfo/users" target="_blank">http://lists.opensips.org/cgi-bin/mailman/listinfo/users</a><br>
&gt;<br>
&gt;<o:p></o:p></p>

</div>

<p class=MsoNormal>&gt;
------------------------------------------------------------------------<o:p></o:p></p>

<div>

<div>

<p class=MsoNormal>&gt;<br>
&gt; _______________________________________________<br>
&gt; Users mailing list<br>
&gt; <a href="mailto:Users@lists.opensips.org">Users@lists.opensips.org</a><br>
&gt; <a href="http://lists.opensips.org/cgi-bin/mailman/listinfo/users"
target="_blank">http://lists.opensips.org/cgi-bin/mailman/listinfo/users</a><br>
&gt;<br>
<br>
<br>
_______________________________________________<br>
Users mailing list<br>
<a href="mailto:Users@lists.opensips.org">Users@lists.opensips.org</a><br>
<a href="http://lists.opensips.org/cgi-bin/mailman/listinfo/users"
target="_blank">http://lists.opensips.org/cgi-bin/mailman/listinfo/users</a><o:p></o:p></p>

</div>

</div>

</div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

</div>

</div>

</body>

</html>