Greetings list, I am forking a call to multiple destinations and want to keep the only branch which sends quicker first 180/183 reply and cancel the remaining branches. Below is my related cfg snippet.
modparam("tm", "failure_reply_mode", 3) modparam("tm", "fr_timer", 30000) modparam("tm", "fr_inv_timer", 120000) modparam("tm", "cancel_b_method", 2) ... route[SIPOUT] { if (uri==myself) return;
append_hf("P-hint: outbound\r\n"); append_branch(); append_branch(); route(RELAY); exit; } onreply_route[MANAGE_REPLY] { xdbg("incoming reply\n"); if(status=~"[12][0-9][0-9]") { xlog("L_INFO","Received $rs (IP:$si:$sp)\n"); if(status=~"18[03]"){ t_cancel_branches("others"); xlog("L_INFO","cancelled all other branches\n"); } route(NATMANAGE); } } ...
But I see kamailio does not instantly send CANCEL to other branches after it has received 180/180 from any branch. Kamailio is sending CANCEL to other branches after they start sending 180/183 one by one. How can I cancel all other branches instantly?
I am sure there is something wrongly configured in my configuration.
Any suggestion is much appreciated. Best Regards.