One more piece of info, I found out that cr_next_domain is failing when i reach the last carrier failure route.
I'm loading this on carrierroute and carrierfailureroute:
CR
5544 2 0 105411609187 0 0 120 4 192.168.200.23 900210540 J10
5545 2 1 105411609187 0 0 30 4 192.168.200.14 900210540 J10
CFR
9240 2 0 105411609187 192.168.200.23 ... 0 0 1 J10
9241 2 1 105411609187 192.168.200.14 ... 0 0 J10
This is what I get on syslog:
Mar 26 10:16:23 cc1pri /usr/local/sbin/kamailio[25163]: Carrier encontrado; ruteando sip:9002105401160918752@192.168.200.23
Mar 26 10:16:23 cc1pri /usr/local/sbin/kamailio[25163]: Carrier fallo ruteando sip:9002105401160918752@192.168.200.23
Mar 26 10:16:23 cc1pri /usr/local/sbin/kamailio[25163]: Se encontre otro carrier para rutear 9002105401160918752
Mar 26 10:16:23 cc1pri /usr/local/sbin/kamailio[25163]: Carrier fallo ruteando sip:9002105401160918752@192.168.200.14
Mar 26 10:16:23 cc1pri /usr/local/sbin/kamailio[25163]: ERROR:carrierroute:cr_load_next_domain: during set_next_domain_recursor, prefix '10541160918752', carrier 2, domain 1
Using this peace of code:
route[2] {
t_on_failure("2");
t_relay();
exit;
}
route[20] {
# ----- Rutear menasje con CR -----
$avp(s:rutaindice) := 0;
if(!cr_route("$avp(s:routeTree)", "$avp(s:rutaindice)", "$oU", "$oU", "call_id", "$avp(s:cr_host)"))
{
sl_send_reply("480", "Temporarily unavailable");
}
else
{
xlog("L_ERR", "Carrier encontrado; ruteando $ru\n");
route(2);
};
}
failure_route[2] {
# ----- Re-Rutear menasje con CR -----
xlog("L_ERR", "Carrier fallo ruteando $ru\n");
if (t_check_status("408|404|5[0-9][0-9]|6[0-9][0-9]"))
{
if (!cr_next_domain("$avp(s:routeTree)", "$avp(s:rutaindice)", "$oU",
"$avp(s:cr_host)", "$T_reply_code", "$avp(s:cfr_domain)"))
{
t_reply("404", "Not found");
exit;
};
$avp(s:rutaindice) = $avp(s:cfr_domain);
if(!cr_route("$avp(s:routeTree)", "$avp(s:rutaindice)", "$oU", "$oU", "call_id")){
xlog("L_ERR", "No se encontraron mas carrier para rutear $rU\n");
t_reply("404", "Not found");
}
else
{
xlog("L_ERR", "Se encontre otro carrier para rutear $rU\n");
append_branch();
route(2);
};
};
}
Guys,
I'm getting this error on the logs for failure route but just for some of the calls I pass. If I call afterwards to that number it rings OK, so it is a random event:
ERROR:carrierroute:cr_load_next_domain: during set_next_domain_recursor, prefix '1054111547533610', carrier 2, domain 1
I'm filling carrierfailureroute with an empty string when I want taht route to be the final one; is it OK to do that?
Thanks in advance,
Uriel