my proxy is listening at udp/tcp ip:port 192.98.102.30:5060 and my
script has this for in-dialog requests:
route [IN_DIALOG_REQUEST] { # handle in-dialog request
if (!loose_route()) {
xlog("L_INFO", "Loose route failed on $hdr(route)\n");
...
exit;
};
xlog("L_INFO", "destination uri after loose_route:
<$du>\n");
if i send to my proxy with sipp this in-dialog bye:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE scenario SYSTEM "sipp.dtd">
<scenario name="In-dialog BYE">
<send>
<![CDATA[
BYE sip:test@192.98.102.30:53846;transport=tcp SIP/2.0
Via: SIP/2.0/UDP 192.98.101.40;branch=z9hG4bK63f.e9d25102.0
Via: SIP/2.0/UDP 192.98.101.157:5080;branch=z9hG4bK6955a179;rport=5080
Route:
<sip:192.98.102.30;r2=on;lr;n1>,<sip:192.98.102.30;transport=tcp;r2=on;lr;n1>
Max-Forwards: 16
From: <sip:jh@test.tutpro.com>;tag=as0cb9dd4f
To: "Test" <sip:test@test.tutpro.com>;tag=3feea37d
Call-ID: d745a79b66919309ba2ef68fde0ca13e@0:0:0:0:0:0:0:0
CSeq: 102 BYE
Content-Length: 0
]]>
</send>
</scenario>
i correctly get to syslog:
Apr 1 20:47:28 siika /usr/sbin/sip-proxy[9583]: INFO: destination uri after loose_route:
<<null>>
that is, the proxy removed both route uris that pointed to itself from
the route set leaving empty $du.
however, if i send to my proxy with sipp this in-dialog bye (where the
only difference to the previous one is request uri that now contains alias
param):
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE scenario SYSTEM "sipp.dtd">
<scenario name="In-dialog BYE">
<send>
<![CDATA[
BYE sip:test@192.98.102.30:5060;alias=192.98.102.30~53846~2;transport=tcp SIP/2.0
Via: SIP/2.0/UDP 192.98.101.40;branch=z9hG4bK63f.e9d25102.0
Via: SIP/2.0/UDP 192.98.101.157:5080;branch=z9hG4bK6955a179;rport=5080
Route:
<sip:192.98.102.30;r2=on;lr;n1>,<sip:192.98.102.30;transport=tcp;r2=on;lr;n1>
Max-Forwards: 16
From: <sip:jh@test.tutpro.com>;tag=as0cb9dd4f
To: "Test" <sip:test@test.tutpro.com>;tag=3feea37d
Call-ID: d745a79b66919309ba2ef68fde0ca13e@0:0:0:0:0:0:0:0
CSeq: 102 BYE
Content-Length: 0
]]>
</send>
</scenario>
i get to syslog:
Apr 1 20:51:20 siika /usr/sbin/sip-proxy[9540]: INFO: destination uri after loose_route:
<sip:192.98.102.30;transport=tcp;r2=on;lr;n1>
can someone explain, how it is possible that when request uri changes,
loose_route() does not anymore consume both route uris that point to the
proxy itself? could this be a bug in loose_route()?
-- juha
Show replies by date
i figured out why loose_route() did not work as expected. it is because
the party that sent the bye, had messed up its request uri and replaced the
host:port of remote target with host:port of the proxy causing
loose_route() to work in strict mode.
teaching: if you see these headers in a request or reply, stay far away
from the sh*t:
User-Agent: DID Logic GW
X-Asterisk-HangupCause: Normal Clearing
X-Asterisk-HangupCauseCode: 16
-- juha