<div dir="ltr">Thank you Henning,<div><br></div><div>Sorry for complicating the question!<br><br>Including 480 in t_check_status will indeed catch the Python scripts crashes, but also a bunch of legitimate cases (480 Temporarily Unavailable – Callee currently unavailable.). So it won't work! Personally, I would try to change the return value to 503, in FreeSWITCH, for the crashing Python scripts.<br><br>I try to clarify another part of my question: will the condition (t_branch_timeout() and !t_branch_replied()) work if the FreeSWITCH blocks (so timeout) after a first reply (like 100 Trying) ?<br>The sequence:<br> - Kamailio -> INVITE -> FreeSWITCH<br> - Kamailio <- 100 Trying <- FreeSWITCH<br> - FreeSWITCH blocks<br> - failure_route signaled because t_branch_timeout<br> - <b>BUT</b> t_branch_replied, so no alternative FS tried<br> Shouldn't all timeouts re-arm the failure route ?</div><div><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>    <b>else if (t_branch_timeout()) </b>{<br>        t_on_failure("REROUTE");<br>    }<br>}<br></div><div><br></div><div>Thanks,</div><div>Liviu</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Oct 29, 2021 at 11:17 AM Henning Westerholt <<a href="mailto:hw@gilawa.com" target="_blank">hw@gilawa.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">





<div lang="DE">
<div>
<p class="MsoNormal"><span>Hello,<u></u><u></u></span></p>
<p class="MsoNormal"><span><u></u> <u></u></span></p>
<p class="MsoNormal"><span lang="EN-GB">Not sure if I understood your question 100%. If you want to work on 480 replies in the failure_route, you should also include this in the t_check_status(..) function call.<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-GB"><u></u> <u></u></span></p>
<p class="MsoNormal"><span lang="EN-GB">Cheers,<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-GB"><u></u> <u></u></span></p>
<p class="MsoNormal"><span lang="EN-GB">Henning<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-GB"><u></u> <u></u></span></p>
<p class="MsoNormal"><span lang="EN-GB">-- <u></u>
<u></u></span></p>
<p class="MsoNormal"><span lang="EN-GB">Henning Westerholt –
</span><span><a href="https://skalatan.de/blog/" target="_blank"><span lang="EN-GB" style="color:rgb(5,99,193)">https://skalatan.de/blog/</span></a></span><span lang="EN-GB"><u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-GB">Kamailio services –
</span><span><a href="https://gilawa.com/" target="_blank"><span lang="EN-GB" style="color:rgb(5,99,193)">https://gilawa.com</span></a></span><span lang="EN-GB"><u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-GB"><u></u> <u></u></span></p>
<div style="border-right:none;border-bottom:none;border-left:none;border-top:1pt solid rgb(225,225,225);padding:3pt 0cm 0cm">
<p class="MsoNormal" style="margin-left:35.4pt"><b>From:</b> sr-users <<a href="mailto:sr-users-bounces@lists.kamailio.org" target="_blank">sr-users-bounces@lists.kamailio.org</a>>
<b>On Behalf Of </b>Liviu ANDRON<br>
<b>Sent:</b> Thursday, October 28, 2021 11:51 AM<br>
<b>To:</b> <a href="mailto:sr-users@lists.kamailio.org" target="_blank">sr-users@lists.kamailio.org</a><br>
<b>Subject:</b> [SR-Users] Does failure_route for redirection covers all error cases ?<u></u><u></u></p>
</div>
<p class="MsoNormal" style="margin-left:35.4pt"><u></u> <u></u></p>
<div>
<p class="MsoNormal" style="margin-left:35.4pt">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:<u></u><u></u></p>
<div>
<p class="MsoNormal" style="margin-left:35.4pt">route[INVITE] {<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt">...<br>
t_on_failure("REROUTE");<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt">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" target="_blank">
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 ?<u></u><u></u></p>
<div>
<p class="MsoNormal" style="margin-left:35.4pt"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt">Thanks,<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt">Liviu<u></u><u></u></p>
</div>
</div>
</div>
</div>
</div>

</blockquote></div>