Makes sense. I thought I was missing something. Hash table will work well. Thanks Daniel.
> On 14 Sep 2016, at 15:36, Daniel-Constantin Mierla <mico...@gmail.com> wrote: > > Hello, > > there is no variable that is stored in the scope of the branch. What you can > use is a hash table and compose the key from callid and branch index > variables with expires that is same as transaction lifetime (max > retransmission timeout). > > And indeed you need to 'touch' the r-uri in order to signal to kamailio that > you have a new destination and want to create a new branch. It may work to > just use append_branch(), otherwise reassigning $ru to itself should do it. > > Cheers, > Daniel > > On 14/09/16 16:11, Paul Smith wrote: >> Hi, >> I am struggling to figure out variable scope in branches and >> branch_failure_routes. Is there a way to store a variable in a branch route >> so that I can then read it from the branch failure route if that branch >> fails? Also does writing $ru in branch_failure_route append a branch? >> >> For example I have multiple SIP devices registered to Kamailio on the same >> account credentials. The devices are behind same NAT, so same public IP. >> Some devices have SRTP required and some cannot use SRTP at all, Kamailio >> does not know in advance of the call whether the call will use SRTP or RTP. >> >> When I send a call to that user Kamailio correctly parallel forks to all the >> registered devices. I use rtpengine offer to send SDP with RTP/SAVP in the >> initial invites. >> >> If one of the devices sends a 488 due to not being able to handle the >> RTP/SAVP I then want to run rtpengine_offer with RTP/AVP and send another >> invite to the same device. >> >> In the branch failure route I seem to have to read the current $ru and then >> write it back into $ru before calling t_relay() or I get >> Sep 14 14:56:06 registrar-secure /usr/sbin/kamailio[10168]: ERROR: tm >> [t_fwd.c:1771]: t_forward_nonack(): ERROR: t_forward_nonack: no branches for >> forwarding >> >> This code seems to work, but it feels like I’m doing something very wrong…. >> in particular $avp(triedrtpout) is set for the transaction, I should be >> setting it separately for each branch. >> event_route[tm:branch-failure:SRTP] { # Handle failure response >> xlog("L_INFO", "Handling $T_reply_code response to $rm to ru: <$ru> >> and du: $du\n"); >> >> if(t_check_status("488") && is_method("INVITE")) { >> if ($avp(triedsrtpout)==1) { >> # set $ru seems to create a new branch ... even when >> we set it to its current value. >> # we want to generate a new SIP INVITE to the same >> AOR but with different SDP >> $avp(buffer)=$ru; >> $ru=$avp(buffer); >> xlog("L_INFO","488 caught. Resending to $ru"); >> # try with unencrypted RTP/AVP >> rtpengine_delete(); >> rtpengine_offer("to-tag trust-address replace-origin >> replace-session-connection ICE=force RTP/AVP"); >> if (!t_relay()) { >> sl_reply_error(); >> } >> >> } >> } >> } >> >> >> I am using kamailio 4.2 debian package for this registrar. >> >> Sorry for the rambling question … I don’t understand enough to write the >> short version! >> >> Paul >> >> >> >> _______________________________________________ >> SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list >> sr-users@lists.sip-router.org <mailto:sr-users@lists.sip-router.org> >> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users >> <http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users> > > -- > Daniel-Constantin Mierla > http://www.asipto.com <http://www.asipto.com/> - http://www.kamailio.org > <http://www.kamailio.org/> > http://twitter.com/#!/miconda <http://twitter.com/#!/miconda> - > http://www.linkedin.com/in/miconda > <http://www.linkedin.com/in/miconda>_______________________________________________ > SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list > sr-users@lists.sip-router.org > http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
_______________________________________________ SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list sr-users@lists.sip-router.org http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users