Why not use an $avp and grab the Call ID header on the inbound packet and then create some routing logic that checks the $avp against the return packet Call ID header to validate it's the same thing? $avps can be made available onreply with a modparam though forgive me if it's a bit late at night and I don't have the link handy.
An avp can store more than a single value but they index in reverse order as written if I recall correctly. On Sat, Feb 12, 2011 at 5:05 AM, Russell Bierschbach < [email protected]> wrote: > I have a similar problem, but not solution, my probably is actually > occurring because the originating UA is ignoring a contact header that is > sent back during a 183 progress message. OpenSIPS uses information from > that contact header to figure out where to relay the incoming message (BYE > in my case, CANCEL in yours). It seems like it would be possible for > OpenSIPS to use a call-id or tag to determine where to relay the message > though. > > > > Russell Bierschbach > > em: [email protected] <[email protected]>, im: > [email protected] > > > > *From:* [email protected] [mailto: > [email protected]] *On Behalf Of *Juri Nysschen > *Sent:* Friday, February 11, 2011 7:44 AM > *To:* [email protected] > *Subject:* [OpenSIPS-Users] FW: CANCELs with no transaction > > > > Hi All, > > > > Need help with a nagging issue: > > > > UA->Opensips 1->Opensips 2->PSTN > > > > UA sends an invite on Opensips 1, and is routed via do_routing() to > Opensips 2, Opensips 2 uses do_routing to get to the PSTN, call starts > ringing. > > > > UA cancels call before answer, but now t_check_trans fails and the CANCEL > is not passed onto the PSTN, with the result that the call rings forever and > can only be terminated by the remote answering and dropping the call or > through a timeout. > > > > The scripts on Opensips 1 & Opensips 2 is virtuall identical: > > > > How do I get the CANCEL to the PSTN ? > > > > route{ > > ..... > > if (is_method("CANCEL") ) { > > route(5); # drop media proxy > > if (t_check_trans()){ # this always fails after a do_routing() > > xlog("L_INFO","CANCEL > Transaction[$fd/$fu/$rd/$ru/$si/]\n"); > > t_relay(); > > exit; > > }; > > exit; > > } > > } > > > > > > route[4] { > > xlog("L_INFO","Route4 [$fd/$fu/$rd/$ru/$si/]\n"); > > > > $avp(i:102)=1; # Default dr-group > > route(10); # Do custom stuff > > t_on_failure("4"); > > if (do_routing("$avp(i:102)")){ > > xlog("L_INFO","Route4 Route to Dyna Group: > $avp(i:102)[$fd/$fu/$rd/$ru/$si/]\n"); > > t_newtran(); > > route(1); > > exit; > > }; > > xlog("L_INFO","Route4 No Route to Host[$fd/$fu/$rd/$ru/$si/]\n"); > > sl_reply_error(); > > exit; > > } > > > > Regards > > Juri Nysschen <http://www.greydotelecom.net/bcard/jnysschen.htm> > > > > _______________________________________________ > Users mailing list > [email protected] > http://lists.opensips.org/cgi-bin/mailman/listinfo/users > >
_______________________________________________ Users mailing list [email protected] http://lists.opensips.org/cgi-bin/mailman/listinfo/users
