[SR-Users] New functionality LCR + force_send_socket() - sanity check
Geoffrey Mina
geoffreymina at gmail.com
Mon Jun 28 18:07:01 CEST 2010
OK, I have decided to use htable to store the AVP returned by the LCR
module. I have everything working, except I have run into a strange issue
with my failure_route logic.
Immediately after calling next_gw() in my initial REQUEST_ROUTE or
FAILURE_ROUTE, I populate an htable which maps the socket I should send all
in-dialog requests from. This gets reset each time we call next_gw() in the
event that a gateway can't service my request for some reason. The issue I
have is that on FAILURE_ROUTE scenarios where I am fetching the next
gateway, it doesn't appear that the force_send_socket() is actually working
for subsequent calls. The real example I am seeing is below. I am seeing
my log in the ELSE statement, but Kamailio continues to send FROM
X.X.X.180. Not sure what I could be doing wrong...
method status fromip toip send_grp INVITE
udp:X.X.X.190:5060 udp:X.X.X.179:5060
INVITE
udp:X.X.X.180:5060 udp:216.82.224.202:5060 1 INVITE 100 udp:
216.82.224.202:5060 udp:X.X.X.180:5060
INVITE 408 udp:216.82.224.202:5060 udp:X.X.X.180:5060
INVITE
udp:X.X.X.180:5060 udp:216.82.225.202:5060 1 INVITE 100 udp:
216.82.225.202:5060 udp:X.X.X.180:5060
INVITE 404 udp:216.82.225.202:5060 udp:X.X.X.180:5060
INVITE
udp:X.X.X.180:5060 udp:209.249.3.78:5060 0 INVITE 100 udp:209.249.3.78:5060
udp:X.X.X.180:5060
INVITE 503 udp:209.249.3.78:5060 udp:X.X.X.180:5060
INVITE
udp:X.X.X.180:5060 udp:208.93.226.12:5060 0 INVITE 100 udp:
208.93.226.12:5060 udp:X.X.X.180:5060
INVITE 503 udp:208.93.226.12:5060 udp:X.X.X.180:5060
INVITE 503 udp:X.X.X.179:5060 udp:X.X.X.190:5060
ACK
udp:X.X.X.190:5060 udp:X.X.X.179:5060
if(next_gw()){
$sht(send_grp=>$ci) = $avp(i:712);
if($sht(send_grp=>$ci) == 1){
xlog("L_INFO", "failure_route[1] - send_group==1; sending
from .180 $ru");
force_send_socket(X.X.X.180:5060);
}else if($sht(send_grp=>$ci) == 2){
xlog("L_INFO", "failure_route[1] - send_group==2; sending
from .180 $ru");
force_send_socket(X.X.X.189:5060);
}else{
xlog("L_INFO", "failure_route[1] - default send group;
sending from .179 $ru");
force_send_socket(X.X.X.179:5060);
}
t_on_reply("1");
t_on_failure("1");
t_relay();
}else{
# let the reply go upstram - it is the default action
xlog("L_ERR", "No Next Gateway - M=$rm RURI=$ru F=$fu T=$tu
IP=$si ID=$ci\n");
exit;
}
On Mon, Jun 28, 2010 at 4:41 AM, Iñaki Baz Castillo <ibc at aliax.net> wrote:
> 2010/6/28 Juha Heinanen <jh at tutpro.com>:
> > Ernest Mavrel writes:
> >
> >> I use same scenario as Geoffrey. But I have problem with
> >> force_send_socket() in failure_route[1].
> >> If is first gw online, then everything is ok, force send socket work.
> >> But when first gw is offline and lcr try second gw, then message go
> >> trough socket which is called on first gw. I am using kamailio 1.4.2. Is
> >> this a bug?
> >
> > i don't know if it is a bug or not, but i call force_send_socket in
> > branch route and it has worked as expected.
>
> It's required to use to_gw_grp() in branch_route as changes done by
> LCR in the RURI are not visible until etering into branch_route.
>
> --
> Iñaki Baz Castillo
> <ibc at aliax.net>
>
> _______________________________________________
> SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
> sr-users at lists.sip-router.org
> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sip-router.org/pipermail/sr-users/attachments/20100628/1f4d6eaa/attachment.htm>
More information about the sr-users
mailing list