Hello All,
I'm having problems when calling next_gw from a failure_route. It
appears that extra characters are getting appended after the
transport=udp portion of the INVITE.
This first INVITE that goes out on the wire looks normal. I'm
intentionally causing the 1st gateway to be offline (time out) so it
failure routes to the next gw:
SIP/SD Request: INVITE sip:1310xxxyyyy@192.168.18.13:5060;transport=udp
The next INVITE to the next gw (called from failure_route) fails due to
extra characters. Note the \000dp after the transport=udp:
SIP/SD Request: INVITE
sip:1310xxxyyyy@192.168.142.40:5060;transport=udp\000dp
And the same thing happens on the next failure route with the \0009b
SIP/SD Request: INVITE
sip:1310xxxyyyy@192.168.101.202:5060;transport=udp\0009b
Looks like I've got extras characters on each of the bad INVITES.
\0009b = .9b & \000dp = .dp
A sample config that reproduces the problem looks like this:
# -------------------------------------------------------------
route{
...snip...
route(1);
}
# -------------------------------------------------------------
route[1] {
if(!load_gws()){
sl_send_reply("500", "Internal server error\n");
xlog("LCR Failure: Unable to load gateways\n");
exit;
};
if(!next_gw()){
sl_send_reply("503", "Service not available");
xlog("LCR Failure: No gateways found\n");
exit;
};
t_on_failure("1"); # Process Failures
if (!t_relay()) {
sl_reply_error();
};
exit;
}
# -------------------------------------------------------------
failure_route[1]{
if(!next_gw()){
t_reply("503", "Service not available");
xlog("$CwrLCR Failure: No gateways found$Cxx\n");
exit;
};
t_relay();
exit;
}
# -------------------------------------------------------------
If I replace the next_gw call in the failure_route with a rewrite_uri(),
append_branch() and a t_relay() then it works as desired so I believe
that the problem is LCR related.
Debug shows the URI's seem to be correct in the gw_uri_avp:
2(12902) load_gws(): DEBUG: Added gw_uri_avp
<sip:1|0@192.168.101.202:5060;transport=udp>
2(12902) load_gws(): DEBUG: Added gw_uri_avp
<sip:1|0@192.168.142.40:5060;transport=udp>
2(12902) load_gws(): DEBUG: Added gw_uri_avp
<sip:|0@192.168.18.13:5060;transport=udp>
System: Solaris10/Sparc64
OpenSER: 1.2.0 with TLS
Any suggestions or thoughts?
Thanks,
Lyle