[SR-Users] CANCEL message processing

Stephen Dodge (Bistech) Special.Projects at bistech.co.uk
Mon Apr 2 13:42:37 CEST 2012


Thanks Daniel.   I have added the t_is_canceled to the top of my failure blocks and the xdbg() has been removed. - I hadn't noticed the lack of curly braces, but it was only there to help me trace the cancel process.

Stephen Dodge


From: Daniel-Constantin Mierla [mailto:miconda at gmail.com]
Sent: 02 April 2012 10:28
To: SIP Router - Kamailio (OpenSER) and SIP Express Router (SER) - Users Mailing List
Cc: Stephen Dodge (Bistech)
Subject: Re: [SR-Users] CANCEL message processing

Hello,

On 3/30/12 5:17 PM, Stephen Dodge (Bistech) wrote:
Hi Guys,

I have a question regarding the correct processing for cancelled requests

1. (A)--------------------INVITE ------------------->(B)
2. (A)<------------------180 RIGING------------------(B)
3. (A)--------------------CANCEL-------------------->(B)
4. (A)<------------------OK--------------------------(B)
5. (A)<---------487 Request Terminated---------------(B)
6. (A)--------------------ACK----------------------->(B)

I have the following section to deal with cancel messages however I am finding that the 487 response still hits my failure_route block.    The failure_route block is called for serial forking.

# CANCEL processing
if (is_method("CANCEL"))
         {
                 if (t_check_trans())
                         xdbg("## BISNET ## - Cancel Processing\n");
                         t_relay();
                exit;
         }

first, a quick note about cfg snippet above:
- you added xdbg() after the IF which makes t_relay() to be executed always -- you should add curly braces when having more than one action in an IF statement.


I can obviously do something like a (!t_check_status("487")) within the failure block but is there a better way to deal with this response ?

Although this doesn't really cause me a problem at the moment I see the following error in the debug

/usr/sbin/kamailio[23786]: ERROR: tm [tm.c:1368]: ERROR: w_t_relay_to: t_relay_to failed
/usr/sbin/kamailio[23786]: ERROR: sl [sl_funcs.c:282]: ERROR: sl_reply_error used: transaction canceled (487/SL)


As always your help is appreciated.
you have to add at the top of failure route:

    if (t_is_canceled()) {
        exit;
    }

The failed transaction is the INVITE, which gets 487. While makes no point in rerouting the INVITE since the caller canceled, it is useful in some cases to get to failure route (e.g., statistics, end rtpproxy relay session initiated for INVITE, ...).

Cheers,
Daniel




--

Daniel-Constantin Mierla

Kamailio Advanced Training, April 23-26, 2012, Berlin, Germany

http://www.asipto.com/index.php/kamailio-advanced-training/

________________________________
Information in this message, including any attachments, is confidential to the person to whom it is addressed and may be legally privileged. If you are not the intended recipient please notify the sender and delete the message from your system. Please note that Bistech Group plc, Bistech plc, Bisnet Limited and the sender do not accept any responsibility for viruses. It is your responsibility to check the e-mail and any attachments for viruses. Calls may be monitored and recorded.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sip-router.org/pipermail/sr-users/attachments/20120402/bb9159c6/attachment.htm>


More information about the sr-users mailing list