Try to re-arm the branch route (t_on_branch(...)) in your failure_route.

> On Dec 16, 2022, at 10:57 AM, Benoît Panizzon <benoit.paniz...@imp.ch> wrote:
> 
> Hi List
> 
> Some time ago, during my learning curve with kamailio, I learned that a
> branch route is where you make modifications to callerId's.
> 
> So I extensively re-engineered the config to move as much as possible
> of callerid modification into branch routes.
> 
> But now I discovered, when a call is dispatched via dispatch group with
> multiple destinations and one destination fails, therefore the failure
> route is triggered, the branch route is not being called on the second
> attempt, thus callerid being in the wrong format.
> 
> Example:
> 
> dispatcher.lst
> 
> As an example, consider having dispatcher group 2001 for national traffic 
> over two
> dedicated links and Dispatcher group 2002 for international traffic.
> 
> 2001 sip:192.168.1.1:5060 0 0 name="Carrier1"
> 2001 sip:192.168.2.1:5060 0 0 name="Carrier1"
> 
> 2002 sip:192.168.1.3:5060 0 0 name="Carrier2"
> 
> request_route
> {
> # We determine where we want to send the call
> # and choose dispatch group 2001, the 'national' one.
> # But there are are other dispatch groups and branch triggers
> # set this way and routed to DISPATCHCALL
> $avp(dispgroup) = 2001;
> t_on_branch("BR_TO_NATIONAL");
> route(DISPATCHCALL);
> }
> 
> route[DISPATCHCALL]
> {
> t_set_fr(120000,1500); # Fast Failover
> t_set_max_lifetime(300000,0);
> t_set_retr(200,800);
> if (ds_select_dst("$avp(dispgroup)", "6")) {
> if (ds_is_from_list(-1,0,"$du")) {
> t_on_failure("DISPATCH_FAILURE");
> route(RELAY);
> }
> }
> }
> 
> branch_route[BR_TO_NATIONAL]
> {
> # Here I make sure, all CallerId and Header are correct for the
> # national Carrier
> }
> 
> failure_route[DISPATCH_FAILURE]
> {
> if (t_check_status("(5[0-9][0-9])") or (t_branch_timeout() and 
> !t_branch_replied())) {
> # Try next DS.
> if (ds_next_dst()) {
> xlog("L_INFO", "     --> retargeting request\n");
> t_on_failure("DISPATCH_FAILURE");
> route(RELAY); #### RIGHT HERE!
> exit;
> }
> }
> # We fail
> xlog("L_ERROR", "Call Failed\n");
> }
> 
> My issue is not, that if the call is routed after the first path failed
> (marked with #### RIGHT HERE!) then the appropriate branch route is not
> triggered again and the headers are wrong. But I can not set t_on_branch
> within route[DISPATCHCALL] or route[DISPATCH_FAILURE] because this is
> called with a different pre-set branch trigger, depending on the target
> dispatch group.
> 
> Is there a way to make a branch trigger more persistent?
> 
> -- 
> Mit freundlichen Grüssen
> 
> -Benoît Panizzon- @ HomeOffice und normal erreichbar
> -- 
> I m p r o W a r e   A G    -    Leiter Commerce Kunden
> ______________________________________________________
> 
> Zurlindenstrasse 29             Tel  +41 61 826 93 00
> CH-4133 Pratteln                Fax  +41 61 826 93 01
> Schweiz                         Web  http://www.imp.ch
> ______________________________________________________
> __________________________________________________________
> Kamailio - Users Mailing List - Non Commercial Discussions
> To unsubscribe send an email to sr-users-le...@lists.kamailio.org
> Important: keep the mailing list in the recipients, do not reply only to the 
> sender!
> Edit mailing list options or unsubscribe:

-- 
Alex Balashov | Principal | Evariste Systems LLC

Tel: +1-706-510-6800 / +1-800-250-5920 (toll-free)
Web: http://www.evaristesys.com/, http://www.csrpswitch.com/

__________________________________________________________
Kamailio - Users Mailing List - Non Commercial Discussions
To unsubscribe send an email to sr-users-le...@lists.kamailio.org
Important: keep the mailing list in the recipients, do not reply only to the 
sender!
Edit mailing list options or unsubscribe:

Reply via email to