<div dir="ltr">Hello,<br><br>We are routing calls to FreeSWITCH servers.<br>We have a failure routing mechanism in place, which looks pretty common from my research around:<div>route[INVITE] {<br></div><div>...<br>t_on_failure("REROUTE");</div><div>and<br>failure_route[REROUTE] {<br>    if (t_is_canceled()) {<br>        exit;<br>    }<br>    //  also 6xx ?<br>    if (t_check_status("5[0-9][0-9]") or (t_branch_timeout() and !t_branch_replied())) {<br>        // re-route to another available FreeSWITCH server<br>    }<br>}<br><br>The problem is that we don't capture all the failures we would like to, one such example being 480 sent by FreeSWITCH in various cases (even default in hangup_cause_to_sip, mod_sofia.c, <a href="https://github.com/signalwire/freeswitch/blob/master/src/mod/endpoints/mod_sofia/mod_sofia.c#L369">https://github.com/signalwire/freeswitch/blob/master/src/mod/endpoints/mod_sofia/mod_sofia.c#L369</a>), like a Python script crash, but also legitimate cases like "user not registered" (USER_NOT_REGISTERED).<br>Are there other cases? Like a timeout replied (t_branch_timeout() and t_branch_replied()) which never recovers ? Shouldn't any t_branch_timeout() re-arm the failure route ?<br><div><br></div><div>Thanks,</div><div>Liviu</div></div></div>