Hi Klaus,
i understand.
In case that the dispatcher-target is responding
with a negative
response code (as it was until now), all targets are sequentially
addressed within a time of lower than 1 second until the error message
of the TM module is interrupting that process.
1s is of course fast enough.
However, if there is no alternative to changing
the define value of
MAX_BRANCHES I will use your recommendation for limiting the number of
gateways that will be addressed over the failure_route. My Question
now is: how can I count the number of branches / rejections (from the
failure_route)?
I've tried using the pseudo_variable $branch(count) (according
description of the WIKI page), but the value is "0" all the time =>
not useful. I could create a private table and use the sqlops module.
Do you have any easier alternative recommendation how the number could
be limited?
What about just incrementing an variable, like an avp and check this in
an if case?
Best regards,
Henning
Hi Henning,
I decided using your recommendation with AVP. Until now I kept some
distance to this mechanism (AVP in general). But because of having no
alternative (std. $var can not work, avoidance of self compilation for a
customer project a.s.o.) I have limited the number of hits - it is now
working fine. Without any dirty hack ;-)
Thanks and best regards,
Klaus
P.S. the abstract solution
route[YZ] {
if (!ds_select_dst("1", "4")) { .. }
$avp(i:9)=1;
t_on_failure("xy");
t_on_reply("yz");
t_set_fr(3000, 750);
t_relay();
exit;
}
failure_route[xy] {
[...]
if ($avp(i:9) < 10){
$avp(i:9) = $avp(i:9) + 1;
#!ifdef WITH_XLOGDEBUG
xlog("L_INFO", " <FAILXY> the new value of branch counter
is:
$avp(i:9) \n");
#!endif
} else {
#!ifdef WITH_XLOGINFO
xlog("L_INFO", " <FAILXY> distr. was interrupted due to too
many
faulty GWYs \n");
#!endif
t_reply("480", "Temporarily Unavailable");
exit;
}
if (!ds_next_dst()) { .. }
[...]
}