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

Reply via email to