[OpenSIPS-Users] limiting the number of gateways tried in lcr module
Andrew Pogrebennyk
andrew.pogrebennyk at portaone.com
Thu May 28 21:41:41 CEST 2009
Thanks for your input, Brett. I tried to initialize the counter from the
main route block, but it didn't work - somehow I ended up with rURI in
$avp(i:500). Then I rewrote the failure_route exactly like in the
example I have provided earlier - and it worked like a magic. Previously
I've had the same pieces of logic, just written in a different way, so I
don't know what was the problem with it. Anyway I'm happy with the way
it works now. In case anyone wonders, here is my working failure_route:
failure_route[1] {
# -----------------------------------------------------------------
# Failover to next gateway if any
# -----------------------------------------------------------------
if (!isflagset(31)) {
$avp(i:500) = 1; # Initialize counter of failed attempts
setflag(31);
} else {
$avp(i:500) = $avp(i:500) + 1; # OR:
# avp_op("$avp(i:500)", "add/1");
}
xlog("L_INFO", "----- Made $avp(i:500) failed attempts\n");
if (t_check_status("403")) {
xlog("L_INFO", "----- Got 403 response; no more gateways
will be tried\n");
t_reply("403", "Forbidden");
exit;
}
if ($avp(i:500) >= 2) { # limit on the search depth is set here
xlog("L_INFO", "----- Didn't get positive response from
two gateways; giving up\n");
t_reply("503", "Couldn't complete the call");
exit;
}
if (next_gw()) {
t_on_failure("1");
t_relay();
} else {
t_reply("503", "No gateways");
exit;
};
}
Brett Nemeroff wrote:
> I don't entirely remember the way the arming of the flags works and how
> they persist across failure_routes. Maybe someone can comment on that?
>
> Instead of using flags, call:
> $avp(i:500) = 1; # Initialize counter of failed attempts
>
> from your main route block, before failure route is called.
>
> Let us know how that works for you..
> -Brett
--
Sincerely,
Andrew Pogrebennyk
More information about the Users
mailing list