Thanks for the suggestion -- unfortunately I saw this previously in a thread and thought that'd be the key, but the results from cranking debug up the same show it to be a different transaction on receiving the ACK and thus the value is null. :(
I've played around with this just a little bit more and by modifying the localcache key to be $fU_$ci (from user / callid pair, or some tag, or something related to the initial request that's available in the script context) I can get it to work how I want, but this really just doesn't seem like the right way to do it. On Fri, Aug 5, 2011 at 12:08 AM, Brett Nemeroff <[email protected]> wrote: > See if setting this param on helps. > > http://www.opensips.org/html/docs/modules/devel/tm.html#id293118 > -Brett > > On Aug 4, 2011, at 7:48 PM, Bobby Smith <[email protected]> wrote: > > All, > > Here's why I'm trying to accomplish: > > route [subsequent_request] { > if (has_totag && is_method("ACK") { > if (MY_VAR = "cisco") { > lookup("location"); > ... relay and exit > } > else { > ... relay and exit lr > } > } > } > > onreply_route [foo] { > .... > if($ua =~ "Cisco-CP79") { > MY_VAR = "cisco" > } > } > > The reasons are not really relevant (it's to get rid of a really poor UA > implementation on older Cisco 79XX firmwares), but my intent is: > > 1) Set a transaction-visible-only value in onreply_route [foo] > 2) Retrieve it on the ACK that completes the initial invite transaction. > > My problems: > > 1) if MY_VAR is an $avp, it returns null on retrieving it in the > route[subsequent_request], even with the onreply flag for tm set. > 2) if MY_VAR is a $var, it's process global and so, the next transaction > that comes in could share the same state (race) > 3) if MY_VAR is a flag, I can't retrieve it in the route [subsequent > request] > 4) if MY_VAR is a dlg_flag or a dlg_var, I can't retrieve it in the > subsequent request even if invoking create_dialog as the first action in the > routing script (if it's an initial invite). > 5) The only thing I've been able to do is create a unique key via > localcache (with $fU_useragent = myvalue) and fetch it, but this does not > allow multiple UA's to register with the same fU > > My question is, is there any way to set a transaction state only value in > an onreply hook, and retrieve it on the ACK? > > I know according to the RFC: > > The reason for this separation is rooted in the importance > <http://rfc-ref.org/RFC-TEXTS/3261/kw-importance.html> of > delivering all 200 (OK) responses to an INVITE > <http://rfc-ref.org/RFC-TEXTS/3261/kw-invite.html> to the UAC > <http://rfc-ref.org/RFC-TEXTS/3261/kw-uac.html>. To > deliver them all to the UAC > <http://rfc-ref.org/RFC-TEXTS/3261/kw-uac.html>, the UAS > <http://rfc-ref.org/RFC-TEXTS/3261/kw-uas.html> alone takes responsibility > > for retransmitting them (see Section 13.3.1.4), and the UAC > <http://rfc-ref.org/RFC-TEXTS/3261/kw-uac.html> alone > takes responsibility for acknowledging them with ACK > <http://rfc-ref.org/RFC-TEXTS/3261/kw-ack.html> (see Section > 13.2.2.4). Since this ACK > <http://rfc-ref.org/RFC-TEXTS/3261/kw-ack.html> is retransmitted only by the > UAC <http://rfc-ref.org/RFC-TEXTS/3261/kw-uac.html>, it is > effectively considered its own transaction > <http://rfc-ref.org/RFC-TEXTS/3261/kw-transaction.html>. > > > > Is there a way to get this associated with the right dialog or something? > I've tried setting a dialog profile on initial invite, storing a value in > the 200 OK onreply, and retrieving it as well in the ACK, but I get no > dialog has been created (I guess because the dialog is early or something). > > > Thanks for the ideas, > > BobbyS > > _______________________________________________ > 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 > >
_______________________________________________ Users mailing list [email protected] http://lists.opensips.org/cgi-bin/mailman/listinfo/users
