[Users] CANCEL/ACK processing
Daniel-Constantin Mierla
daniel at voice-system.ro
Mon Nov 13 10:21:48 CET 2006
Hello,
On 11/08/06 01:28, Mark Kent wrote:
> 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 was done inside TM module. A stateful proxyshould send immediately
back a reply to CANCEL.
> 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?
>
Yes, this is part of TM module as well. This behavior is required by RFC.
> 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?
>
ACKs to negative replies are filtered out by SL module, since they are
intended to end to openser proxy.
Cheers,
Daniel
> 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...
>
>
> _______________________________________________
> Users mailing list
> Users at openser.org
> http://openser.org/cgi-bin/mailman/listinfo/users
>
>
More information about the Users
mailing list