[SR-Users] 401 responses ending up in onreply_route instead of failure_route

Daniel Tryba daniel at pocos.nl
Fri Jan 31 11:17:28 CET 2014


On Friday 31 January 2014 06:17:35 Daniel-Constantin Mierla wrote:
> > But to my suprise the 401 doesn't end up in the failure_route but in the
> > onreply_route. Why? What am I missing?
> 
> if you don't drop it in the onreply route, then you should have the 
> failure route executed as well. Also, in case there are many branches, 
> the failure route is executed only when all branches fail and the branch 
> with the response code having the highest priority is executed. 401 is 
> among ones with high priority, but there are others over it, like 
> redirects, transaction cancelled...

That is what I thought, except I'm not seeing anything happening in the 
failure route.

For the initial invite in route[RELAY]:

        if (is_method("INVITE|SUBSCRIBE|UPDATE")) {
                xlog("t_on_failure(MANAGE_BRANCH)");
                if(!t_is_set("branch_route")) t_on_branch("MANAGE_BRANCH");
        }
        if (is_method("INVITE|SUBSCRIBE|UPDATE")) {
                xlog("t_on_failure(MANAGE_REPLY)");
                if(!t_is_set("onreply_route")) t_on_reply("MANAGE_REPLY");
        }
        if (is_method("INVITE")) {
                xlog("t_on_failure(MANAGE_FAILURE)");
                if(!t_is_set("failure_route")) t_on_failure("MANAGE_FAILURE");
        }
xlog("RELAY: ru: $ru");

Which I see being applied in syslog:
Jan 31 10:50:22 ALERT: <script>: AUTHENTICATE[1]: INVITE from sip:test at test to 
sip:0880100705 at test (IP:109.235.34.226:5071)
Jan 31 10:50:22 ERROR: <script>: t_on_failure(MANAGE_BRANCH)
Jan 31 10:50:22 ERROR: <script>: t_on_failure(MANAGE_REPLY)
Jan 31 10:50:22 ERROR: <script>: t_on_failure(MANAGE_FAILURE)
Jan 31 10:50:22 ERROR: <script>: RELAY: ru: sip:
+31880100705 at sip.pocos.nl:5060;transport=udp

The 401 comes back and gets logged in MANAGE_REPLY:

onreply_route[MANAGE_REPLY] {
        xlog("onreply: $rs $rr");

        if(status=~"[12][0-9][0-9]")
                route(NATMANAGE);
}

failure_route[MANAGE_FAILURE] {
        xlog("failure: $rs $rr");
...
}

event_route[dialog:failed]
{
        xlog("===== noanswer of dialog [$dlg(h_entry):$dlg(h_id)]\n");
}

Jan 31 10:50:22 ERROR: <script>: onreply: 401 Unauthorized
Jan 31 10:50:22 ERROR: <script>: ===== noanswer of dialog [2990:9928]
Jan 31 10:50:22 ERROR: <script>: route[WITHINDLG]
Jan 31 10:50:22 ERROR: <script>: route[WITHINDLG]
Jan 31 10:50:22 ALERT: <script>: AUTHENTICATE[-1]: INVITE from sip:test at test 
to sip:0880100705 at test (IP:109.235.34.226:5071)
Jan 31 10:50:22 ALERT: <script>: AUTHENTICATE: INVITE from sip:test at test to 
sip:0880100705 at test (IP:109.235.34.226:5071)

So the 401 triggers a dialog failed event and then is handled WITHINDLG which 
is only called from the request_route.

SIP traffic:

T 109.235.34.226:5071 -> 109.235.36.148:5060 [A]
INVITE sip:0880100705 at test SIP/2.0.
Via: SIP/2.0/TCP 10.0.3.175:5071;branch=z9hG4bK-4dfd0797.
From: "test" <sip:test at test>;tag=ade412afb1ed2f55o0.
To: <sip:0880100705 at test>.
Call-ID: 634f5137-8573c26d at 10.0.3.175.
CSeq: 101 INVITE.
Max-Forwards: 70.
Contact: "test" <sip:test at 10.0.3.175:5071;transport=tcp>.
Expires: 240.
User-Agent: Linksys/SPA962-6.1.3(a).
Content-Length: 198.
Allow: ACK, BYE, CANCEL, INFO, INVITE, NOTIFY, OPTIONS, REFER.
Supported: replaces.
Content-Type: application/sdp.
.
v=0.
o=- 1977 1977 IN IP4 10.0.3.175.
s=-.
c=IN IP4 10.0.3.175.
t=0 0.
m=audio 16384 RTP/AVP 8 101.
a=rtpmap:8 PCMA/8000.
a=rtpmap:101 telephone-event/8000.
a=fmtp:101 0-15.
a=ptime:30.
a=sendrecv.

#
T 109.235.36.148:5060 -> 109.235.34.226:5071 [AP]
SIP/2.0 401 Unauthorized.
Via: SIP/2.0/TCP 
10.0.3.175:5071;branch=z9hG4bK-4dfd0797;rport=5071;received=109.235.34.226.
From: "test" <sip:test at test>;tag=ade412afb1ed2f55o0.
To: <sip:0880100705 at test>;tag=09ad8b5e6adf88220a126c2faf3dd6ad.e41d.
Call-ID: 634f5137-8573c26d at 10.0.3.175.
CSeq: 101 INVITE.
WWW-Authenticate: Digest realm="test", 
nonce="UutzClLrcd4DHPyXRQqbkGiV9IG0O775", qop="auth".
Content-Length: 0.
.

#
T 109.235.34.226:5071 -> 109.235.36.148:5060 [A]
ACK sip:0880100705 at test SIP/2.0.
Via: SIP/2.0/TCP 10.0.3.175:5071;branch=z9hG4bK-4dfd0797.
From: "test" <sip:test at test>;tag=ade412afb1ed2f55o0.
To: <sip:0880100705 at test>;tag=09ad8b5e6adf88220a126c2faf3dd6ad.e41d.
Call-ID: 634f5137-8573c26d at 10.0.3.175.
CSeq: 101 ACK.
Max-Forwards: 70.
Contact: "test" <sip:test at 10.0.3.175:5071;transport=tcp>.
User-Agent: Linksys/SPA962-6.1.3(a).
Content-Length: 0.
.

##
T 109.235.34.226:5071 -> 109.235.36.148:5060 [AP]
INVITE sip:0880100705 at test SIP/2.0.
Via: SIP/2.0/TCP 10.0.3.175:5071;branch=z9hG4bK-c94437af.
From: "test" <sip:test at test>;tag=ade412afb1ed2f55o0.
To: <sip:0880100705 at test>.
Call-ID: 634f5137-8573c26d at 10.0.3.175.
CSeq: 102 INVITE.
Max-Forwards: 70.
Authorization: Digest 
username="test",realm="test",nonce="UutzClLrcd4DHPyXRQqbkGiV9IG0O775",uri="sip:0880100705 at test",algorithm=MD5,response="0f1879f1bb7fb047290949077b9ed4e8",qop=auth,nc=00000001,cnonce="b10a7f95".
Contact: "test" <sip:test at 10.0.3.175:5071;transport=tcp>.
Expires: 240.
User-Agent: Linksys/SPA962-6.1.3(a).
Content-Length: 198.
Allow: ACK, BYE, CANCEL, INFO, INVITE, NOTIFY, OPTIONS, REFER.
Supported: replaces.
Content-Type: application/sdp.
.
v=0.
o=- 1977 1977 IN IP4 10.0.3.175.
s=-.
c=IN IP4 10.0.3.175.
t=0 0.
m=audio 16384 RTP/AVP 8 101.
a=rtpmap:8 PCMA/8000.
a=rtpmap:101 telephone-event/8000.
a=fmtp:101 0-15.
a=ptime:30.
a=sendrecv.

##
T 109.235.36.148:5060 -> 109.235.34.226:5071 [AP]
SIP/2.0 100 trying -- your call is important to us.
Via: SIP/2.0/TCP 10.0.3.175:5071;branch=z9hG4bK-
c94437af;rport=5071;received=109.235.34.226.
From: "test" <sip:test at test>;tag=ade412afb1ed2f55o0.
To: <sip:0880100705 at test>.
Call-ID: 634f5137-8573c26d at 10.0.3.175.
CSeq: 102 INVITE.
Content-Length: 0.
.

#
U 109.235.36.148:5060 -> 109.235.32.40:5060
INVITE sip:+31880100705 at sip.pocos.nl:5060;transport=udp SIP/2.0.
Record-Route: 
<sip:109.235.36.148;r2=on;lr=on;ftag=ade412afb1ed2f55o0;did=eab.8c62;vsf=AAAAAEBfUFpDCXdLWkEZXy8LAR9dGgocRgEfdGVkLm5s;nat=yes>.
Record-Route: 
<sip:109.235.36.148;transport=tcp;r2=on;lr=on;ftag=ade412afb1ed2f55o0;did=eab.8c62;vsf=AAAAAEBfUFpDCXdLWkEZXy8LAR9dGgocRgEfdGVkLm5s;nat=yes>.
Via: SIP/2.0/UDP 
109.235.36.148;branch=z9hG4bKe7af.0b8e50b08945d2c51c44b38bb2a6f840.0;i=1.
Via: SIP/2.0/TCP 
10.0.3.175:5071;rport=5071;received=109.235.34.226;branch=z9hG4bK-c94437af.
From: "test" <sip:test at test>;tag=ade412afb1ed2f55o0.
To: <sip:0880100705 at test>.
Call-ID: 634f5137-8573c26d at 10.0.3.175.
CSeq: 102 INVITE.
Max-Forwards: 16.
Contact: "test" 
<sip:test at 10.0.3.175:5071;alias=109.235.34.226~5071~2;transport=tcp>.
Expires: 240.
Content-Length: 224.
Allow: ACK, BYE, CANCEL, INFO, INVITE, NOTIFY, OPTIONS, REFER.
Supported: replaces.
Content-Type: application/sdp.
.
v=0.
o=- 1977 1977 IN IP4 109.235.36.148.
s=-.
c=IN IP4 109.235.36.148.
t=0 0.
m=audio 55224 RTP/AVP 8 101.
a=rtpmap:8 PCMA/8000.
a=rtpmap:101 telephone-event/8000.
a=fmtp:101 0-15.
a=ptime:30.
a=sendrecv.
a=nortpproxy:yes.

#
U 109.235.32.40:5060 -> 109.235.36.148:5060
SIP/2.0 401 Unauthorized.
Via: SIP/2.0/UDP 
109.235.36.148;branch=z9hG4bKe7af.0b8e50b08945d2c51c44b38bb2a6f840.0;i=1;rport=5060.
Via: SIP/2.0/TCP 
10.0.3.175:5071;rport=5071;received=109.235.34.226;branch=z9hG4bK-c94437af.
From: "test" <sip:test at test>;tag=ade412afb1ed2f55o0.
To: <sip:0880100705 at test>;tag=47dc960d0aec89efc47228ca957df0ae.2208.
Call-ID: 634f5137-8573c26d at 10.0.3.175.
CSeq: 102 INVITE.
WWW-Authenticate: Digest realm="test", 
nonce="UutzClLrcd7HrDEFx7D1Zd3UyDMMfekY", qop="auth".
Content-Length: 0.
.

#
U 109.235.36.148:5060 -> 109.235.32.40:5060
ACK sip:+31880100705 at sip.pocos.nl:5060;transport=udp SIP/2.0.
Via: SIP/2.0/UDP 
109.235.36.148;branch=z9hG4bKe7af.0b8e50b08945d2c51c44b38bb2a6f840.0;i=1.
From: "test" <sip:test at test>;tag=ade412afb1ed2f55o0.
To: <sip:0880100705 at test>;tag=47dc960d0aec89efc47228ca957df0ae.2208.
Call-ID: 634f5137-8573c26d at 10.0.3.175.
CSeq: 102 ACK.
Max-Forwards: 16.
Content-Length: 0.
.

#
T 109.235.36.148:5060 -> 109.235.34.226:5071 [AP]
SIP/2.0 401 Unauthorized.
Via: SIP/2.0/TCP 
10.0.3.175:5071;rport=5071;received=109.235.34.226;branch=z9hG4bK-c94437af.
From: "test" <sip:test at test>;tag=ade412afb1ed2f55o0.
To: <sip:0880100705 at test>;tag=47dc960d0aec89efc47228ca957df0ae.2208.
Call-ID: 634f5137-8573c26d at 10.0.3.175.
CSeq: 102 INVITE.
WWW-Authenticate: Digest realm="test", 
nonce="UutzClLrcd7HrDEFx7D1Zd3UyDMMfekY", qop="auth".
Content-Length: 0.
.


-- 

POCOS B.V. - Croy 9c - 5653 LC Eindhoven
Telefoon: 040 293 8661 - Fax: 040 293 8658
http://www.pocos.nl/   - http://www.sipo.nl/
K.v.K. Eindhoven 17097024



More information about the sr-users mailing list