Looking a bit at the node, I see that the r-uri branch is ignored if not changed at all. So if you updated r-uri in the config, then it will be kept. But the same behaviour seems to be in 5.3. Maybe in the new config you do operations over $ru or use some functions changing it.
You can try to do revert_uri() before t_load_contacts(0). Cheers, Daniel On 19.08.20 16:12, Daniel-Constantin Mierla wrote: > > Hello, > > On 18.08.20 08:05, Cindy Leung wrote: >> Hello all, >> >> Just started using v5.4.0 on our system and I noticed a change in >> behavior when doing the append_branch, t_load_contacts, and >> t_next_contacts combo. Previously using v5.3.4 and it appears to be >> fine. >> >> Here's the call scenario: Kamailio receives a call to >> sip:1001@carrierB. Kamailio sees carrierB and appends 2 contacts: >> gateway1.carrierB.com <http://gateway1.carrierB.com>;q=0.3 and >> gateway2.carrierB.com <http://gateway2.carrierB.com>;q=0.2. After >> t_load_branches(0), > > first, I am not finding the t_load_branches() function, is it supposed > to be t_load_contacts()? > > The, supposing it was the later, afaik, the load contacts was putting > the branches in internal xavps, not pushing to the r-uri. The > append_branch() was not changing the first branch (the r-uri) but > adding extra. So if you have the invite coming in to [email protected] and do > append_branch([email protected]) and append_branch([email protected]), then it will be 3 > branches that will go out in case of parallel forking. > > With t_load_contacts() and t_next_contacts(), these 3 branches should > be prepared to do serial forking. > > Now, I haven't really used these functions myself to comment more, it > is based on what append_branch() is doing: adding extra branches and > keeping the first branch (r-uri) untouched. > > But if you found a different behaviour than expected, open a bug on > issue tracker and we can refer the developer of commit > 1399714fbba63732f94eb8034dabb1e565ca832a (which added proportional > load) to review it. > > Cheers, > Daniel > >> I expect to see $rd to be changed to gateway1.carrierB.com >> <http://gateway1.carrierB.com>, but it's not. >> >> This is the piece of config I'm trying to debug: >> xlog ("=== branch 0: $(branch(uri)[0]), $(branch(q)[0])\n"); >> xlog ("=== branch 1: $(branch(uri)[1]), $(branch(q)[1])\n"); >> t_load_contacts(0); >> while (t_next_contacts()) { >> xlog ("=== rd = $rd\n"); >> } >> >> This is the log I get. It appears to use the backup contact first. >> ERROR: IBG_LOG: [email protected] >> <mailto:[email protected]>: === branch 0: >> sip:[email protected] >> <mailto:sip%[email protected]>;transport=udp, 200 >> ERROR: IBG_LOG: [email protected] >> <mailto:[email protected]>: === branch 1: >> sip:[email protected] >> <mailto:sip%[email protected]>;transport=tcp, 300 >> DEBUG: IBG_LOG: [email protected] >> <mailto:[email protected]>: tm >> [t_serial.c:522]: t_load_contacts(): load_contact mode selected: 0 >> DEBUG: IBG_LOG: [email protected] >> <mailto:[email protected]>: tm >> [t_serial.c:340]: ki_t_load_contacts_mode(): nr_branches is 2 >> DEBUG: IBG_LOG: [email protected] >> <mailto:[email protected]>: <core> >> [core/xavp.c:539]: xavp_destroy_list(): destroying xavp list >> 0x7f983cb66608 >> DEBUG: IBG_LOG: [email protected] >> <mailto:[email protected]>: tm >> [t_serial.c:890]: ki_t_next_contacts(): Appending branch >> uri-'sip:[email protected] >> <mailto:uri-%27sip%[email protected]>;transport=tcp' >> dst-'' path-'' inst-'' ruid-'' location_ua-'' >> DEBUG: IBG_LOG: [email protected] >> <mailto:[email protected]>: <core> >> [core/xavp.c:539]: xavp_destroy_list(): destroying xavp list >> 0x7f983cb66350 >> ERROR: IBG_LOG: [email protected] >> <mailto:[email protected]>: === rd = carrierB >> DEBUG: IBG_LOG: [email protected] >> <mailto:[email protected]>: <core> >> [core/xavp.c:539]: xavp_destroy_list(): destroying xavp list >> 0x7f983cb66078 >> ERROR: IBG_LOG: [email protected] >> <mailto:[email protected]>: === rd = >> gateway2.carrierB.com <http://gateway2.carrierB.com> >> DEBUG: IBG_LOG: [email protected] >> <mailto:[email protected]>: tm >> [t_serial.c:627]: ki_t_next_contacts(): no contacts in contacts_avp - >> we are done! >> >> t_load_contacts(1) works a little better. But we don't need the >> probability feature. >> ERROR: IBG_LOG: [email protected] >> <mailto:[email protected]>: === branch 0: >> sip:[email protected] >> <mailto:sip%[email protected]>;transport=udp, 200 >> ERROR: IBG_LOG: [email protected] >> <mailto:[email protected]>: === branch 1: >> sip:[email protected] >> <mailto:sip%[email protected]>;transport=tcp, 300 >> DEBUG: IBG_LOG: [email protected] >> <mailto:[email protected]>: tm >> [t_serial.c:522]: t_load_contacts(): load_contact mode selected: 1 >> DEBUG: IBG_LOG: [email protected] >> <mailto:[email protected]>: tm >> [t_serial.c:340]: ki_t_load_contacts_mode(): nr_branches is 2 >> DEBUG: IBG_LOG: [email protected] >> <mailto:[email protected]>: tm >> [t_serial.c:280]: t_load_contacts_proportional(): proportionally >> selected contact with uri: sip:[email protected] >> <mailto:sip%[email protected]>;transport=tcp (q: 300, >> random: 287, q_index: 500, q_total: 500) >> DEBUG: IBG_LOG: [email protected] >> <mailto:[email protected]>: tm >> [t_serial.c:280]: t_load_contacts_proportional(): proportionally >> selected contact with uri: sip:[email protected] >> <mailto:sip%[email protected]>;transport=udp (q: 200, >> random: 157, q_index: 200, q_total: 200) >> DEBUG: IBG_LOG: [email protected] >> <mailto:[email protected]>: tm >> [t_serial.c:303]: t_load_contacts_proportional(): proportionally >> added backup contact with uri: sip:1001@carrierB SIP/2.0#015#012Via: >> SIP/2.0/UDP 172.18.1.21:5060;branch=z9hG4bK-21-1-0 blah blah blah (q: -1) >> DEBUG: IBG_LOG: [email protected] >> <mailto:[email protected]>: <core> >> [core/xavp.c:539]: xavp_destroy_list(): destroying xavp list >> 0x7f6e457ec078 >> ERROR: IBG_LOG: [email protected] >> <mailto:[email protected]>: === rd = >> gateway1.carrierB.com <http://gateway1.carrierB.com> >> DEBUG: IBG_LOG: [email protected] >> <mailto:[email protected]>: <core> >> [core/xavp.c:539]: xavp_destroy_list(): destroying xavp list >> 0x7f6e457ec350 >> ERROR: IBG_LOG: [email protected] >> <mailto:[email protected]>: === rd = >> gateway2.carrierB.com <http://gateway2.carrierB.com> >> DEBUG: IBG_LOG: [email protected] >> <mailto:[email protected]>: <core> >> [core/xavp.c:539]: xavp_destroy_list(): destroying xavp list >> 0x7f6e457ec608 >> ERROR: IBG_LOG: [email protected] >> <mailto:[email protected]>: === rd = carrierB >> DEBUG: IBG_LOG: [email protected] >> <mailto:[email protected]>: tm >> [t_serial.c:627]: ki_t_next_contacts(): no contacts in contacts_avp - >> we are done! >> >> As a comparison, this is what we've been getting in 5.3.4 >> ERROR: IBG_LOG: [email protected] >> <mailto:[email protected]>: === branch 0: >> sip:[email protected] >> <mailto:sip%[email protected]>;transport=udp, 200 >> ERROR: IBG_LOG: [email protected] >> <mailto:[email protected]>: === branch 1: >> sip:[email protected] >> <mailto:sip%[email protected]>;transport=tcp, 300 >> DEBUG: IBG_LOG: [email protected] >> <mailto:[email protected]>: tm >> [t_serial.c:191]: ki_t_load_contacts(): nr_branches is 2 >> DEBUG: IBG_LOG: [email protected] >> <mailto:[email protected]>: <core> >> [core/xavp.c:529]: xavp_destroy_list(): destroying xavp list >> 0x7fe13146a680 >> ERROR: IBG_LOG: [email protected] >> <mailto:[email protected]>: === rd = >> gateway1.carrierB.com <http://gateway1.carrierB.com> >> DEBUG: IBG_LOG: [email protected] >> <mailto:[email protected]>: <core> >> [core/xavp.c:529]: xavp_destroy_list(): destroying xavp list >> 0x7fe13146a3a8 >> ERROR: IBG_LOG: [email protected] >> <mailto:[email protected]>: === rd = >> gateway2.carrierB.com <http://gateway2.carrierB.com> >> DEBUG: IBG_LOG: [email protected] >> <mailto:[email protected]>: <core> >> [core/xavp.c:529]: xavp_destroy_list(): destroying xavp list >> 0x7fe13146a0d0 >> ERROR: IBG_LOG: [email protected] >> <mailto:[email protected]>: === rd = carrierB >> DEBUG: IBG_LOG: [email protected] >> <mailto:[email protected]>: tm >> [t_serial.c:460]: ki_t_next_contacts(): no contacts in contacts_avp - >> we are done! >> >> Is there anything else that's been changed in branch building that we >> should pay attention to? Thanks. >> >> >> >> Cindy >> >> >> _______________________________________________ >> Kamailio (SER) - Users Mailing List >> [email protected] >> https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users > -- > Daniel-Constantin Mierla -- www.asipto.com > www.twitter.com/miconda -- www.linkedin.com/in/miconda > Funding: https://www.paypal.me/dcmierla -- Daniel-Constantin Mierla -- www.asipto.com www.twitter.com/miconda -- www.linkedin.com/in/miconda Funding: https://www.paypal.me/dcmierla
_______________________________________________ Kamailio (SER) - Users Mailing List [email protected] https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
