[OpenSIPS-Users] Re-invite problem -> 491 Request Pending
Brett Nemeroff
brett at nemeroff.com
Tue Oct 6 15:14:53 CEST 2009
Bogdan,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?
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.
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?)
Thanks,
Brett
On Tue, Oct 6, 2009 at 8:01 AM, Bogdan-Andrei Iancu
<bogdan at voice-system.ro>wrote:
> Hi Brett,
>
> This is an ancient topic that needs to be solved once for all. The
> bottom problem is that OpenSIPS / TM does try o match the 200OK ACK
> against the INVITE transaction - and it should not do that as 200OK ACK
> forms a separate transaction and it matches at dialog level, not
> transaction level. Because of this, the 200OK ACK matching is not
> reliable (especially if you do spirals on opensips) and it is also time
> consuming.
>
> Because of this, the 200OK ACK matching takes longer than processing of
> a re-INVITE and here comes the changing in order.
>
> IMO, this artificial / forced matching of 200 OK should be dropped.
>
> But there are 2 modules using this:
> ACC - for accounting ACK for 200 OK - not sure how many people do enable
> this
> OSP - no clue :D.....
>
> Regards,
> Bogdan
>
> Brett Nemeroff wrote:
> > Jeff,
> > Thanks for your reply. Is this in the loose route? or.. ? Does it
> > break anything else? Bogdan, anyway you can explain what's going on
> > here? :)
> > -Brett
> >
> >
> > On Mon, Oct 5, 2009 at 12:30 PM, Jeff Kronlage <jeff at data102.com
> > <mailto:jeff at data102.com>> wrote:
> >
> > Brett,
> >
> > I had this same exact problem. The solution was a little clunky
> > but sending the ACK out statelessly solves the problem.
> >
> > My code looks like:
> >
> > t_check_trans();
> >
> > if (is_method("ACK") && !t_check_trans()) {
> >
> > if (!forward()) sl_reply_error();
> >
> > exit;
> >
> > }
> >
> > if (!t_relay()) sl_reply_error();
> >
> > I wish I could give a more techie explanation on why this works –
> > it was a hackjob answer for me. Bogdan posted an answer perhaps a
> > week ago that explained it a bit.
> >
> > Cheers,
> >
> > --
> >
> > Jeff Kronlage
> >
> > Senior IT Engineer, Data102
> >
> > 102 South Tejon, Suite #1250
> >
> > Colorado Springs, CO 80903
> >
> > (719) 387-0000 x 1335 direct
> >
> > (719) 578-8844 fax
> >
> > jeff at data102.com <mailto:jeff at data102.com> / http://www.data102.com
> >
> > *From:* users-bounces at lists.opensips.org
> > <mailto:users-bounces at lists.opensips.org>
> > [mailto:users-bounces at lists.opensips.org
> > <mailto:users-bounces at lists.opensips.org>] *On Behalf Of *Brett
> > Nemeroff
> > *Sent:* Monday, October 05, 2009 9:51 AM
> > *To:* users at lists.opensips.org <mailto:users at lists.opensips.org>
> > *Subject:* [OpenSIPS-Users] Re-invite problem -> 491 Request Pending
> >
> > Hello All,
> >
> > I'm not sure where the problem is.. it's either my switch, or it's
> > the customer's box.
> >
> > What's happening is the customer sends a call. As soon as the
> > 200OK gets back to them, they re-invite.. very fast. The reinvite
> > occurs BEFORE the ACK for the 200OK makes it back to the provider.
> > Because of this, when the RE-INVITE hits the provider they respond
> > with "491 Request Pending", in other words, I can't process a
> > re-invite because the last INVITE hasn't send me an ACK back yet.
> > This happens over.. and over.. and over.
> >
> > What I'm wondering is if there is a timer I can adjust for this.
> > Seems like OpenSIPs should know that the transaction is in a state
> > where there is a PENDING ACK and it shouldn't process the
> > RE-INVITE quite yet (Request Queued?). Perhaps that isn't a normal
> > function of a Proxy. So I guess I'm looking for either a timer
> > adjustment or a way to insert some sorta delay (sounds like a bad
> > idea) to allow the ACK to traverse.
> >
> > The numbers are VERY close.. the ACK actually arrives at timestamp
> > 12.757073, but the INVITE goes to the provider at 12.755913. So in
> > other words, if the RE-INVITE occured 0.001161 seconds later, this
> > wouldn't happen. Seems like there should be something to prevent
> > these events? (A properly working UAC perhaps?!)
> >
> > Any ideas?
> >
> > Thanks,
> >
> > Brett
> >
> >
> > _______________________________________________
> > Users mailing list
> > Users at lists.opensips.org <mailto:Users at lists.opensips.org>
> > http://lists.opensips.org/cgi-bin/mailman/listinfo/users
> >
> >
> > ------------------------------------------------------------------------
> >
> > _______________________________________________
> > Users mailing list
> > Users at lists.opensips.org
> > http://lists.opensips.org/cgi-bin/mailman/listinfo/users
> >
>
>
> _______________________________________________
> Users mailing list
> Users at lists.opensips.org
> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.opensips.org/pipermail/users/attachments/20091006/5cac95c2/attachment.htm
More information about the Users
mailing list