<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=us-ascii">
<META content="MSHTML 6.00.2900.3268" name=GENERATOR></HEAD>
<BODY>
<DIV><SPAN class=769355018-11072008><FONT face=Arial
size=2>Hi,</FONT></SPAN></DIV>
<DIV><SPAN class=769355018-11072008><FONT face=Arial
size=2></FONT></SPAN> </DIV>
<DIV><SPAN class=769355018-11072008><FONT face=Arial size=2>I'm running SER
V0.9.6 and I'm having a problem with CANCELs.</FONT></SPAN></DIV>
<DIV><SPAN class=769355018-11072008><FONT face=Arial
size=2></FONT></SPAN> </DIV>
<DIV><SPAN class=769355018-11072008><FONT face=Arial size=2>A client sends and
invite to SER that relays it on to a gateway. In this particular
scenario, a CANCEL is send by the client after SER responds with the 100
trying. I had thought that SER would match the INVITE based on the branch
tag and automatically send a CANCEL on to the gateway. Unfortunately, SER
cannot find a matching transaction and, thus, the GATEWAY never receives a
CANCEL..</FONT></SPAN></DIV>
<DIV><SPAN class=769355018-11072008><FONT face=Arial
size=2></FONT></SPAN> </DIV>
<DIV><SPAN class=769355018-11072008><FONT face=Arial size=2>Here's a snippet
from the debugging output:</FONT></SPAN></DIV>
<DIV><SPAN class=769355018-11072008><FONT face=Arial
size=2></FONT></SPAN> </DIV>
<DIV><SPAN class=769355018-11072008><FONT face=Arial
size=2>...</FONT></SPAN></DIV>
<DIV><SPAN class=769355018-11072008><FONT face=Arial size=2> 0(28802) SIP
Request:<BR> 0(28802) method:
<INVITE><BR> 0(28802) uri:
<sip:4027160348@wic.west.com><BR> 0(28802) version:
<SIP/2.0><BR> 0(28802) parse_headers: flags=1<BR> 0(28802) Found
param type 232, <branch> = <z9hG4bK1249933199>;
state=16<BR> 0(28802) end of header reached, state=5<BR> 0(28802)
Header Type: 1<BR> 0(28802) parse_headers: Via found,
flags=1<BR> 0(28802) parse_headers: this is the first via<BR> 0(28802)
header field type 1, name=<Via>, body=<SIP/2.0/UDP
10.27.192.94:5060;branch=z9hG4bK1249933199><BR> 0(28802) preparing to
run routing scripts...<BR> 0(28802) parse_headers:
flags=128<BR> 0(28802) Header Type: 8<BR> 0(28802) header field type
8, name=<From>,
body=<<sip:4027161000@10.27.192.94>;tag=3673666958><BR> 0(28802)
end of header reached, state=9<BR> 0(28802) DEBUG: get_hdr_field:
<To> [31]; uri=[sip:4027160348@wic.west.com]<BR> 0(28802) DEBUG: to
body [<sip:4027160348@wic.west.com><BR>]<BR> 0(28802) Header Type:
4<BR> 0(28802) header field type 4, name=<To>,
body=<<sip:4027160348@wic.west.com>><BR> 0(28802) Header Type:
32<BR> 0(28802) header field type 32, name=<Call-ID>, body=<<A
href="mailto:514+43+1215800190+24+t1b@10.27.192.94">514+43+1215800190+24+t1b@10.27.192.94</A>><BR> 0(28802)
get_hdr_field: cseq <CSeq>: <2> <INVITE><BR> 0(28802)
Header Type: 16<BR> 0(28802) header field type 16, name=<CSeq>,
body=<2 INVITE><BR> 0(28802) Header Type: 64<BR> 0(28802) header
field type 64, name=<Contact>,
body=<<sip:e514@10.27.192.94>><BR> 0(28802) Header Type:
33554432<BR> 0(28802) header field type 33554432, name=<user-agent>,
body=<oSIP/wicsip-3.3.4><BR> 0(28802) Header Type:
1073741824<BR> 0(28802) header field type 1073741824,
name=<x-west-rg>, body=<0:17><BR> 0(28802) Header Type:
1024<BR> 0(28802) header field type 1024, name=<Content-Type>,
body=<application/sdp><BR> 0(28802) DEBUG: get_hdr_body :
content_length=111<BR> 0(28802) Header Type: 2048<BR> 0(28802) header
field type 2048, name=<Content-Length>, body=<111
><BR> 0(28802) found end of header<BR> 0(28802) Header Type:
-1<BR> 0(28802) DEBUG: is_maxfwd_present: max_forwards header not
found!<BR> 0(28802) grep_sock_info - checking if host==us: 12==13
&& [wic.west.com] == [10.27.193.119]<BR> 0(28802)
grep_sock_info - checking if port 5060 matches port 5060<BR> 0(28802)
grep_sock_info - checking if host==us: 12==13 && [wic.west.com] ==
[10.27.193.119]<BR> 0(28802) grep_sock_info - checking if port 5060 matches
port 5060<BR> 0(28802) check_self: host != me<BR> 0(28802) subst_run:
running. r=0<BR> 0(28802) subst_run: matched (0, 0): []<BR> 0(28802)
subst_run: running. r=1<BR> 0(28802) subst_f: lst was
(nil)<BR> 0(28802) subst_run: running. r=0<BR> 0(28802) subst_run:
matched (0, 36): [sip:9990001254027160348@wic.west.com]<BR> 0(28802)
textops: subst_uri_f: match - old uri= [sip:9990001254027160348@wic.west.com],
new uri= [sip:9990001254027160348@10.27.202.157]<BR> 0(28802) DEBUG:
t_newtran: msg id=36 , global msg id=35 , T on entrance=(nil)<BR> 0(28802)
parse_headers: flags=-1<BR> 0(28802) parse_headers:
flags=60<BR> 0(28802) t_lookup_request: start searching: hash=34792,
isACK=0<BR> 0(28802) DEBUG: RFC3261 transaction matching
failed<BR> 0(28802) DEBUG: t_lookup_request: no transaction
found<BR> 0(28802) DEBUG: add_param: tag=3673666958<BR> 0(28802) end
of header reached, state=29<BR> 0(28802) SER: new INVITE<BR> 0(28802)
parse_headers: flags=-1<BR> 0(28802) check_via_address(10.27.192.94,
10.27.192.94, 0)<BR> 0(28802) WARNING:vqm_resize: resize(0)
called<BR> 0(28802) DEBUG: reply sent out. buf=0x810be30: SIP/2.0 1...,
shmem=0x422c3c60: SIP/2.0 1<BR> 0(28802) DEBUG: _reply_light:
finished<BR> 0(28802) DEBUG: mk_proxy: doing DNS
lookup...<BR> 0(28802) check_via_address(10.27.192.94, 10.27.192.94,
0)<BR> 0(28802) DEBUG: add_to_tail_of_timer[4]:
0x422c2ac0<BR> 0(28802) DEBUG: add_to_tail_of_timer[0]:
0x422c2ad0<BR> 0(28802) SER: new transaction fwd'ed<BR> 0(28802)
DEBUG:destroy_avp_list: destroying list (nil)<BR> 0(28802) receive_msg:
cleaning up<BR> 0(28802)<BR></FONT></SPAN></DIV>
<DIV><SPAN class=769355018-11072008><FONT face=Arial
size=2>...</FONT></SPAN></DIV>
<DIV><SPAN class=769355018-11072008><FONT face=Arial
size=2></FONT></SPAN> </DIV>
<DIV><SPAN class=769355018-11072008><FONT face=Arial size=2> 0(28802) SIP
Request:<BR> 0(28802) method:
<CANCEL><BR> 0(28802) uri:
<sip:4027160348@wic.west.com><BR> 0(28802) version:
<SIP/2.0><BR> 0(28802) parse_headers: flags=1<BR> 0(28802) Found
param type 232, <branch> = <z9hG4bK1249933199>;
state=16<BR> 0(28802) end of header reached, state=5<BR> 0(28802)
Header Type: 1<BR> 0(28802) parse_headers: Via found,
flags=1<BR> 0(28802) parse_headers: this is the first via<BR> 0(28802)
header field type 1, name=<Via>, body=<SIP/2.0/UDP
10.27.192.94:5060;branch=z9hG4bK1249933199><BR> 0(28802) preparing to
run routing scripts...<BR> 0(28802) parse_headers:
flags=128<BR> 0(28802) Header Type: 8<BR> 0(28802) header field type
8, name=<From>,
body=<<sip:4027161000@10.27.192.94>;tag=3673666958><BR> 0(28802)
end of header reached, state=9<BR> 0(28802) DEBUG: get_hdr_field:
<To> [31]; uri=[sip:4027160348@wic.west.com]<BR> 0(28802) DEBUG: to
body [<sip:4027160348@wic.west.com><BR>]<BR> 0(28802) Header Type:
4<BR> 0(28802) header field type 4, name=<To>,
body=<<sip:4027160348@wic.west.com>><BR> 0(28802) Header Type:
32<BR> 0(28802) header field type 32, name=<Call-ID>, body=<<A
href="mailto:514+43+1215800190+24+t1b@10.27.192.94">514+43+1215800190+24+t1b@10.27.192.94</A>><BR> 0(28802)
get_hdr_field: cseq <CSeq>: <2> <CANCEL><BR> 0(28802)
Header Type: 16<BR> 0(28802) header field type 16, name=<CSeq>,
body=<2 CANCEL><BR> 0(28802) Header Type: 64<BR> 0(28802) header
field type 64, name=<Contact>,
body=<<sip:514+43+1215800190+24+t1b@10.27.192.94>><BR> 0(28802)
Header Type: 33554432<BR> 0(28802) header field type 33554432,
name=<user-agent>, body=<oSIP/wicsip-3.3.4><BR> 0(28802) Header
Type: 1073741824<BR> 0(28802) header field type 1073741824,
name=<x-west-rg>, body=<0:0><BR> 0(28802) DEBUG: get_hdr_body :
content_length=0<BR> 0(28802) Header Type: 2048<BR> 0(28802) header
field type 2048, name=<Content-Length>, body=<0><BR> 0(28802)
found end of header<BR> 0(28802) Header Type: -1<BR> 0(28802) DEBUG:
is_maxfwd_present: max_forwards header not found!<BR> 0(28802)
grep_sock_info - checking if host==us: 12==13 && [wic.west.com] ==
[10.27.193.119]<BR> 0(28802) grep_sock_info - checking if port 5060 matches
port 5060<BR> 0(28802) grep_sock_info - checking if host==us: 12==13
&& [wic.west.com] == [10.27.193.119]<BR> 0(28802)
grep_sock_info - checking if port 5060 matches port 5060<BR> 0(28802)
check_self: host != me<BR> 0(28802) subst_run: running.
r=0<BR> 0(28802) subst_run: matched (0, 27):
[sip:4027160348@wic.west.com]<BR> 0(28802) textops: subst_uri_f: match -
old uri= [sip:4027160348@wic.west.com], new uri=
[sip:4027160348@10.27.202.157]<BR> 0(28802) subst_run: running.
r=0<BR> 0(28802) subst_run: matched (0, 0): []<BR> 0(28802) XLOG:
xl_print_log: final buffer length 99<BR> 0(28802) time [Fri Jul 11 14:15:52
2008] KLP: CANCEL REQUEST - ruri
<sip:9990001254027160348@10.27.202.157><BR> 0(28802) DEBUG: t_check:
msg id=40 global id=37 T start=0xffffffff<BR> 0(28802) parse_headers:
flags=-1<BR> 0(28802) parse_headers: flags=60<BR> 0(28802)
t_lookup_request: start searching: hash=34792, isACK=0<BR> 0(28802) DEBUG:
RFC3261 transaction matching failed<BR> 0(28802) DEBUG: t_lookup_request:
no transaction found<BR> 0(28802) DEBUG: t_check: msg id=40 global id=40 T
end=(nil)<BR> 0(28802) XLOG: xl_print_log: final buffer length
64<BR> 0(28802) time [Fri Jul 11 14:15:52 2008] KLP: CANCEL REQUEST --
ignoring<BR> 0(28802) DEBUG:destroy_avp_list: destroying list
(nil)<BR> 0(28802) receive_msg: cleaning
up<BR> 0(28802)<BR></FONT></SPAN></DIV>
<DIV><SPAN class=769355018-11072008><FONT face=Arial size=2>I've verified that
the branchID of the INVITE matches that of the CANCEL so I had expected the
t_lookup_request() to succeed.</FONT></SPAN></DIV>
<DIV><SPAN class=769355018-11072008><FONT face=Arial
size=2></FONT></SPAN> </DIV>
<DIV><SPAN class=769355018-11072008><FONT face=Arial size=2>Do I misunderstand
the way transactions work? Any suggestions on how I might get this to
work?</FONT></SPAN></DIV>
<DIV><SPAN class=769355018-11072008><FONT face=Arial
size=2></FONT></SPAN> </DIV>
<DIV><SPAN class=769355018-11072008><FONT face=Arial size=2>Any help is
appreciated.</FONT></SPAN></DIV>
<DIV><SPAN class=769355018-11072008><FONT face=Arial
size=2></FONT></SPAN> </DIV>
<DIV><SPAN class=769355018-11072008><FONT face=Arial
size=2>Thanks!</DIV></FONT></SPAN>
<DIV><SPAN class=769355018-11072008></SPAN> </DIV></BODY></HTML>