Hello list.
I'm having some problems trying to build a counter for my kamailio.cfg file.
This is what I have..
Th
main()
...
load avp from radius}
var(i)=0;
route(3);
...
route[1] {
t_on_failure("1");
if (!t_relay()) {
sl_reply_error();
};
xlog("L_INFO","[$ci] $rm t_relay a $ru");
exit;
}
route(3)
...
$var(nr)=$avp(s:caller_nr);
If ( var(i) < $var(nr) );
$var(i) = $var(i) + 1;
route(1);
else
exit;
failure_route[1] {
xlog("L_INFO", "[$ci] $rm:$ru failure_route\n");
if (t_was_cancelled()) {
xlog("L_INFO", "[$ci] $rm:$ru t_was_cancelled en failure_route\n");
exit;
}
if (!next_gw()) {
xlog("L_INFO", "[$ci] No hay mas gateways para $rm:$ou\n");
route(3);
} else {
xlog("L_INFO", "XXXXX");
}
t_on_failure("1");
t_relay();
}
After I restart the service the first time a call arrives the counter seems to go OK, the counter goes from 0 to 2 (if the caller_nr=3). But the second time the $var(i) at the main and route(3) it's = 0, but in the failure_route it keeps the value = 3. What I'm doing wrong?
Can someone help me here?
Thanks
Ricardo Martinez.-
Hello,
On 11/13/08 16:42, Ricardo Martinez wrote:
Hello list.
I’m having some problems trying to build a counter for my kamailio.cfg file.
This is what I have..
Th
main()
…
load avp from radius}
var(i)=0;
route(3);
…
route[1] {
t_on_failure("1");
if (!t_relay()) {
sl_reply_error();
};
xlog("L_INFO","[$ci] $rm t_relay a $ru");
exit;
}
route(3)
…
$var(nr)=$avp(s:caller_nr);
If ( var(i) < $var(nr) );
$var(i) = $var(i) + 1;
route(1);
else
exit;
failure_route[1] {
xlog("L_INFO", "[$ci] $rm:$ru failure_route\n");
if (t_was_cancelled()) {
xlog("L_INFO", "[$ci] $rm:$ru t_was_cancelled en failure_route\n");
exit;
}
if (!next_gw()) {
xlog("L_INFO", "[$ci] No hay mas gateways para $rm:$ou\n");
route(3);
} else {
xlog("L_INFO", "XXXXX");
}
t_on_failure("1");
t_relay();
}
After I restart the service the first time a call arrives the counter seems to go OK, the counter goes from 0 to 2 (if the caller_nr=3). But the second time the $var(i) at the main and route(3) it’s = 0, but in the failure_route it keeps the value = 3. What I’m doing wrong?
Can someone help me here?
the $var(x) variables are per process. As you use them in failure route, the process can be different. You need a counter specific per SIP message, therefore you have to use AVPs. Use := operator so you are sure there is a single avp counter. $avp(i:23) := $avp(i:23) + 1;
Cheers, Daniel
... sorry for duplicate, this discussion was started with another subject and answered there as well ... just digesting the mail backlog of last week here ...
Daniel
On 11/18/08 13:18, Daniel-Constantin Mierla wrote:
Hello,
On 11/13/08 16:42, Ricardo Martinez wrote:
Hello list.
I’m having some problems trying to build a counter for my kamailio.cfg file.
This is what I have..
Th
main()
…
load avp from radius}
var(i)=0;
route(3);
…
route[1] {
t_on_failure("1");
if (!t_relay()) {
sl_reply_error();
};
xlog("L_INFO","[$ci] $rm t_relay a $ru");
exit;
}
route(3)
…
$var(nr)=$avp(s:caller_nr);
If ( var(i) < $var(nr) );
$var(i) = $var(i) + 1;
route(1);
else
exit;
failure_route[1] {
xlog("L_INFO", "[$ci] $rm:$ru failure_route\n");
if (t_was_cancelled()) {
xlog("L_INFO", "[$ci] $rm:$ru t_was_cancelled en failure_route\n");
exit;
}
if (!next_gw()) {
xlog("L_INFO", "[$ci] No hay mas gateways para $rm:$ou\n");
route(3);
} else {
xlog("L_INFO", "XXXXX");
}
t_on_failure("1");
t_relay();
}
After I restart the service the first time a call arrives the counter seems to go OK, the counter goes from 0 to 2 (if the caller_nr=3). But the second time the $var(i) at the main and route(3) it’s = 0, but in the failure_route it keeps the value = 3. What I’m doing wrong?
Can someone help me here?
the $var(x) variables are per process. As you use them in failure route, the process can be different. You need a counter specific per SIP message, therefore you have to use AVPs. Use := operator so you are sure there is a single avp counter. $avp(i:23) := $avp(i:23) + 1;
Cheers, Daniel