Bogdan,<div>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?</div><div><br></div><div>
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.</div>
<div><br></div><div>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?)</div><div><br></div>
<div><br></div><div>Thanks,</div><div>Brett</div><div><br><br><div class="gmail_quote">On Tue, Oct 6, 2009 at 8:01 AM, Bogdan-Andrei Iancu <span dir="ltr"><<a href="mailto:bogdan@voice-system.ro">bogdan@voice-system.ro</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">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<br>
<div class="im"><br>
Brett Nemeroff wrote:<br>
> Jeff,<br>
> Thanks for your reply. Is this in the loose route? or.. ? Does it<br>
> break anything else? Bogdan, anyway you can explain what's going on<br>
> here? :)<br>
> -Brett<br>
><br>
><br>
> On Mon, Oct 5, 2009 at 12:30 PM, Jeff Kronlage <<a href="mailto:jeff@data102.com">jeff@data102.com</a><br>
</div><div class="im">> <mailto:<a href="mailto:jeff@data102.com">jeff@data102.com</a>>> wrote:<br>
><br>
> Brett,<br>
><br>
> I had this same exact problem. The solution was a little clunky<br>
> but sending the ACK out statelessly solves the problem.<br>
><br>
> My code looks like:<br>
><br>
> t_check_trans();<br>
><br>
> if (is_method("ACK") && !t_check_trans()) {<br>
><br>
> if (!forward()) sl_reply_error();<br>
><br>
> exit;<br>
><br>
> }<br>
><br>
> if (!t_relay()) sl_reply_error();<br>
><br>
> I wish I could give a more techie explanation on why this works –<br>
> it was a hackjob answer for me. Bogdan posted an answer perhaps a<br>
> week ago that explained it a bit.<br>
><br>
> Cheers,<br>
><br>
> --<br>
><br>
> Jeff Kronlage<br>
><br>
> Senior IT Engineer, Data102<br>
><br>
> 102 South Tejon, Suite #1250<br>
><br>
> Colorado Springs, CO 80903<br>
><br>
> (719) 387-0000 x 1335 direct<br>
><br>
> (719) 578-8844 fax<br>
><br>
</div>> <a href="mailto:jeff@data102.com">jeff@data102.com</a> <mailto:<a href="mailto:jeff@data102.com">jeff@data102.com</a>> / <a href="http://www.data102.com" target="_blank">http://www.data102.com</a><br>
<div class="im">><br>
> *From:* <a href="mailto:users-bounces@lists.opensips.org">users-bounces@lists.opensips.org</a><br>
> <mailto:<a href="mailto:users-bounces@lists.opensips.org">users-bounces@lists.opensips.org</a>><br>
> [mailto:<a href="mailto:users-bounces@lists.opensips.org">users-bounces@lists.opensips.org</a><br>
> <mailto:<a href="mailto:users-bounces@lists.opensips.org">users-bounces@lists.opensips.org</a>>] *On Behalf Of *Brett<br>
> Nemeroff<br>
> *Sent:* Monday, October 05, 2009 9:51 AM<br>
</div>> *To:* <a href="mailto:users@lists.opensips.org">users@lists.opensips.org</a> <mailto:<a href="mailto:users@lists.opensips.org">users@lists.opensips.org</a>><br>
<div><div></div><div class="h5">> *Subject:* [OpenSIPS-Users] Re-invite problem -> 491 Request Pending<br>
><br>
> Hello All,<br>
><br>
> I'm not sure where the problem is.. it's either my switch, or it's<br>
> the customer's box.<br>
><br>
> What's happening is the customer sends a call. As soon as the<br>
> 200OK gets back to them, they re-invite.. very fast. The reinvite<br>
> occurs BEFORE the ACK for the 200OK makes it back to the provider.<br>
> Because of this, when the RE-INVITE hits the provider they respond<br>
> with "491 Request Pending", in other words, I can't process a<br>
> re-invite because the last INVITE hasn't send me an ACK back yet.<br>
> This happens over.. and over.. and over.<br>
><br>
> What I'm wondering is if there is a timer I can adjust for this.<br>
> Seems like OpenSIPs should know that the transaction is in a state<br>
> where there is a PENDING ACK and it shouldn't process the<br>
> RE-INVITE quite yet (Request Queued?). Perhaps that isn't a normal<br>
> function of a Proxy. So I guess I'm looking for either a timer<br>
> adjustment or a way to insert some sorta delay (sounds like a bad<br>
> idea) to allow the ACK to traverse.<br>
><br>
> The numbers are VERY close.. the ACK actually arrives at timestamp<br>
> 12.757073, but the INVITE goes to the provider at 12.755913. So in<br>
> other words, if the RE-INVITE occured 0.001161 seconds later, this<br>
> wouldn't happen. Seems like there should be something to prevent<br>
> these events? (A properly working UAC perhaps?!)<br>
><br>
> Any ideas?<br>
><br>
> Thanks,<br>
><br>
> Brett<br>
><br>
><br>
> _______________________________________________<br>
> Users mailing list<br>
</div></div>> <a href="mailto:Users@lists.opensips.org">Users@lists.opensips.org</a> <mailto:<a href="mailto:Users@lists.opensips.org">Users@lists.opensips.org</a>><br>
<div class="im">> <a href="http://lists.opensips.org/cgi-bin/mailman/listinfo/users" target="_blank">http://lists.opensips.org/cgi-bin/mailman/listinfo/users</a><br>
><br>
><br>
</div>> ------------------------------------------------------------------------<br>
<div><div></div><div class="h5">><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><br>
><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><br>
</div></div></blockquote></div><br></div>