[Users] CANCEL/ACK processing
Mark Kent
mark at noc.mainstreet.net
Wed Nov 8 00:28:08 CET 2006
Observant readers will recognize from the following that this question
is related to earlier posts from me... that is: there is something
fundamental that I just don't get.
If someone is eager to answer all my questions, then
please search ahead for the question marks (?).
Also, what is the bigger picture that I am missing?
Please use as many words as necessary to explain.
Thanks,
-mark
The players:
CUSTOMER-IP: the UserAgent
OPENSER-IP: my openser box
OPENSER.FQDN: the fully qualified domain name of my openser box
PSTNGW-IP: the PSTN gateway
My openser box gets this CANCEL:
U 2006/11/06 18:40:10.689785 CUSTOMER-IP:5060 -> OPENSER-IP:5060
CANCEL sip:011445551212 at OPENSER.FQDN:5060 SIP/2.0
From: <sip:CUST-PHONE-NUMBER at CUSTOMER-IP:5060;transport=UDP>;tag=TAG
To: <sip:011445551212 at OPENSER.FQDN:5060;transport=UDP>
Call-ID: CALLID at CUSTOMER-IP
CSeq: 2 CANCEL
Via: SIP/2.0/UDP CUSTOMER-IP:5060;branch=BRANCH
Max-Forwards: 70
Supported: 100rel,replaces
Content-Length: 0
It ends up in my standard stateful relay handler where I
t_relay() it (should I?) and this gets generated:
#
U 2006/11/06 18:40:10.691301 OPENSER-IP:5060 -> PSTNGW-IP:5060
CANCEL sip:445551212 at PSTNGW-IP;user=phone SIP/2.0
Record-Route: <sip:011445551212 at OPENSER-IP;lr=on;ftag=TAG>
From: <sip:CUST-PHONE-NUMBER at CUSTOMER-IP:5060;transport=UDP>;tag=TAG
To: <sip:011445551212 at OPENSER.FQDN:5060;transport=UDP>
Call-ID: CALLID at CUSTOMER-IP
CSeq: 2 CANCEL
Via: SIP/2.0/UDP OPENSER-IP;branch=BRANCH2.0
Via: SIP/2.0/UDP CUSTOMER-IP:5060;branch=BRANCH
Max-Forwards: 69
Supported: 100rel,replaces
Content-Length: 0
and this also happens:
#
U 2006/11/06 18:40:10.691342 OPENSER-IP:5060 -> CUSTOMER-IP:5060
SIP/2.0 200 canceling
From: <sip:CUST-PHONE-NUMBER at CUSTOMER-IP:5060;transport=UDP>;tag=TAG
To: <sip:011445551212 at OPENSER.FQDN:5060;transport=UDP>;tag=TAG2
Call-ID: CALLID at CUSTOMER-IP
CSeq: 2 CANCEL
Via: SIP/2.0/UDP CUSTOMER-IP:5060;branch=BRANCH
Content-Length: 0
How was that last packet generated, where was it done?
It's not in my openser.cfg, should I have sent back just such
a message? If so, would this automagically sent message still
have been sent?
Next I get these two packets:
#
U 2006/11/06 18:40:10.761582 PSTNGW-IP:5060 -> OPENSER-IP:5060
SIP/2.0 200 OK
Call-ID: CALLID at CUSTOMER-IP
From: <sip:CUST-PHONE-NUMBER at CUSTOMER-IP:5060;transport=UDP>;tag=TAG
To: <sip:011445551212 at OPENSER.FQDN:5060;transport=UDP>
Content-Length: 0
CSeq: 2 CANCEL
Via: SIP/2.0/UDP OPENSER-IP;branch=BRANCH2.0,SIP/2.0/UDP CUSTOMER-IP:5060;branch=BRANCH
Contact: sip:445551212 at PSTNGW-IP:5060;user=phone
Record-Route: <sip:011445551212 at OPENSER-IP;lr=on;ftag=TAG>
#
U 2006/11/06 18:40:10.761616 PSTNGW-IP:5060 -> OPENSER-IP:5060
SIP/2.0 487 Request Terminated
Call-ID: CALLID at CUSTOMER-IP
From: <sip:CUST-PHONE-NUMBER at CUSTOMER-IP:5060;transport=UDP>;tag=TAG
To: <sip:011445551212 at OPENSER.FQDN:5060;transport=UDP>;tag=20505
Content-Length: 0
CSeq: 2 INVITE
Via: SIP/2.0/UDP OPENSER-IP;branch=BRANCH2.0,SIP/2.0/UDP CUSTOMER-IP:5060;branch=BRANCH
and my openser box replies with :
#
U 2006/11/06 18:40:10.762238 OPENSER-IP:5060 -> PSTNGW-IP:5060
ACK sip:445551212 at PSTNGW-IP;user=phone SIP/2.0
Via: SIP/2.0/UDP OPENSER-IP;branch=BRANCH2.0
From: <sip:CUST-PHONE-NUMBER at CUSTOMER-IP:5060;transport=UDP>;tag=TAG
Call-ID: CALLID at CUSTOMER-IP
To: <sip:011445551212 at OPENSER.FQDN:5060;transport=UDP>;tag=20505
CSeq: 2 ACK
Content-Length: 0
and sends on this to the UAC:
#
U 2006/11/06 18:40:10.762377 OPENSER-IP:5060 -> CUSTOMER-IP:5060
SIP/2.0 487 Request Terminated
Call-ID: CALLID at CUSTOMER-IP
From: <sip:CUST-PHONE-NUMBER at CUSTOMER-IP:5060;transport=UDP>;tag=TAG
To: <sip:011445551212 at OPENSER.FQDN:5060;transport=UDP>;tag=20505
Content-Length: 0
CSeq: 2 INVITE
Via: SIP/2.0/UDP CUSTOMER-IP:5060;branch=BRANCH
Now, how was that generated? Is this part of the "tm" module?
And then when I get this ACK:
#
U 2006/11/06 18:40:10.772875 CUSTOMER-IP:5060 -> OPENSER-IP:5060
ACK sip:011445551212 at OPENSER.FQDN:5060 SIP/2.0
From: <sip:CUST-PHONE-NUMBER at CUSTOMER-IP:5060;transport=UDP>;tag=TAG
To: <sip:011445551212 at OPENSER.FQDN:5060;transport=UDP>;tag=20505
Call-ID: CALLID at CUSTOMER-IP
CSeq: 2 ACK
Via: SIP/2.0/UDP CUSTOMER-IP:5060;branch=BRANCH
Max-Forwards: 70
Contact: <sip:CUST-PHONE-NUMBER at CUSTOMER-IP:5060;transport=UDP>
Content-Length: 0
What should I do with it? I do nothing... if I should do nothing
is there any special way I should do it? Or is this just handled
by the tm module?
What I don't get is the CANCEL is directed AT my openser box:
CANCEL sip:011445551212 at OPENSER.FQDN:5060 SIP/2.0
To: <sip:011445551212 at OPENSER.FQDN:5060;transport=UDP>
just like the ACK:
ACK sip:011445551212 at OPENSER.FQDN:5060 SIP/2.0
To: <sip:011445551212 at OPENSER.FQDN:5060;transport=UDP>;tag=20505
and I t_relay() the CANCEL but sit on the ACK...
More information about the sr-users
mailing list