Re: [Sip] Open Issue #7: CANCEL for non-INVITE

Suheel Hussain <ssh@cisco.com> Mon, 10 September 2001 19:16 UTC

Received: from optimus.ietf.org (ietf.org [132.151.1.19] (may be forged)) by ietf.org (8.9.1a/8.9.1a) with ESMTP id PAA27725 for <sip-archive@odin.ietf.org>; Mon, 10 Sep 2001 15:16:48 -0400 (EDT)
Received: from optimus.ietf.org (localhost [127.0.0.1]) by optimus.ietf.org (8.9.1a/8.9.1) with ESMTP id OAA14687; Mon, 10 Sep 2001 14:49:14 -0400 (EDT)
Received: from ietf.org (odin [132.151.1.176]) by optimus.ietf.org (8.9.1a/8.9.1) with ESMTP id OAA14616 for <sip@optimus.ietf.org>; Mon, 10 Sep 2001 14:49:09 -0400 (EDT)
Received: from rtp-msg-core-1.cisco.com (rtp-msg-core-1.cisco.com [161.44.11.97]) by ietf.org (8.9.1a/8.9.1a) with ESMTP id OAA26816 for <sip@ietf.org>; Mon, 10 Sep 2001 14:47:40 -0400 (EDT)
Received: from dingdong.cisco.com (dingdong.cisco.com [64.102.17.16]) by rtp-msg-core-1.cisco.com (8.11.3/8.9.1) with ESMTP id f8AIlje18585; Mon, 10 Sep 2001 14:47:45 -0400 (EDT)
Received: from cisco.com (dhcp-64-102-97-140.cisco.com [64.102.97.140]) by dingdong.cisco.com (Mirapoint) with ESMTP id ACF11880 (AUTH ssh); Mon, 10 Sep 2001 14:48:10 -0400 (EDT)
Message-ID: <3B9D0BFB.6050602@cisco.com>
Date: Mon, 10 Sep 2001 14:52:43 -0400
From: Suheel Hussain <ssh@cisco.com>
Organization: Cisco Systems
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:0.9.2) Gecko/20010726 Netscape6/6.1
X-Accept-Language: en-us
MIME-Version: 1.0
To: Christer Holmberg <christer.holmberg@lmf.ericsson.se>
CC: Jonathan Rosenberg <jdrosen@dynamicsoft.com>, "'Henning G. Schulzrinne'" <hgs@cs.columbia.edu>, sip@ietf.org
Subject: Re: [Sip] Open Issue #7: CANCEL for non-INVITE
References: <B65B4F8437968F488A01A940B21982BF020D6806@DYN-EXCH-001.dynamicsoft.com> <3B9C5895.AB292BD@lmf.ericsson.se>
Content-Type: multipart/alternative; boundary="------------080009030006000504030001"
Sender: sip-admin@ietf.org
Errors-To: sip-admin@ietf.org
X-Mailman-Version: 1.0
Precedence: bulk
List-Id: Session Initiation Protocol <sip.ietf.org>
X-BeenThere: sip@ietf.org

Christer,
By sending an error code for a CANCEL, does it mean that error-code
should be sent only if I (UA) do not want to process non-INVITE CANCEL?
If yes, then this could lead to backward compatibility problem -- i.e., an
UA running a new version of SIP sending a non-INVITE CANCEL to and
older version UA. For example:

UA new                            UA old
     -------- REFER ----------->
                                       start processing REFER
wait..wait
I want to cancel
REFER
  --------- CANCEL ---------->
                                       sorry I do not know why this cancel
                                       Discard and keep processing REFER
Whew...
I got REFER cancelled -------- REFER processing complete
                                          call transferred

In this case absence of an error-code signifies that CANCEL was
successful; whereas UA-old does not cancels REFER.

How do we handle such conditions?

Christer Holmberg wrote:

>Hi,
>
>My personal opinion is that we, like Henning said, simply should have a
>error code telling "sorry, I can't cancel the specific request". Of
>course we can, if needed, also have different error codes for request
>that can't be cancelled because a final response has been sent, and
>another code for requests that the UAS simply doesn't allow - for any
>reason - the UAC to CANCEL.
>
>For example, even if we most likely always will accept a CANCEL for the
>initial INVITE, there are many cases where we may not accept a CANCEL
>for a re-INVITE. 
>
>Eg, if I receive a re-INVITE to change some codecs, I may not accept a
>CANCEL. EVEN if I would be smart enough to remember the previous codecs
>it is not even sure that I have resources to change them back. In that
>case we would need a code saying "well, I did CANCEL your re-INVITE, but
>now I am not able to put the old codecs back, so it would probably be a
>good idea to release the whole call". No, I don't think we want that...
>Another thinkg would be for the UAS to send a BYE, since it can't put
>the codecs back, but I don't think we want that either, so...
>
>Regards,
>
>Christer Holmberg
>Ericsson Finland
>
>
>
>
>Jonathan Rosenberg wrote:
>
>>
>>
>>>-----Original Message-----
>>>From: Henning G. Schulzrinne [mailto:hgs@cs.columbia.edu]
>>>Sent: Sunday, September 02, 2001 5:24 PM
>>>To: sip@ietf.org
>>>Subject: [Sip] Open Issue #7: CANCEL for non-INVITE
>>>
>>>
>>>(Due to travel, I probably missed some of the discussion, so excuse me
>>>for re-raising old issues.)
>>>
>>>A few notes:
>>>
>>>- I think the complexity of CANCEL for non-INVITE on the
>>>server side is
>>>essentially zero. If you don't implement it, you can either return 481
>>>(i.e., the request has already been completed) or 405 (but see below).
>>>
>>Well, the proposal was pretty much that. It does nothing. Just respond to
>>it. The point is that a client MUSTNOT send it anymore (i.e., its deprecated
>>as it doesn't do anything useful).
>>
>>>- If we don't allow CANCEL for non-INVITE, we have to extend the
>>>definition of 405 (or define a new status code), since the method *is*
>>>supported for an INVITE for the same URL. To wit, the current
>>>text says:
>>>
>>>"The method specified in the \header{Request-Line} is not allowed for
>>>the
>>>address identified by the \header{Request-URI}.  The response {\MUST}
>>>include an \header{Allow} header field containing a list of valid
>>>methods for the indicated address."
>>>
>>>Note that this defines the granularity of requests at the URI
>>>level, not
>>>at the method level.
>>>
>>Right. It wasn't the proposal to respond with a 405. Just a 200 OK, in fact.
>>
>>>- Does anything else get simpler if we disallow CANCEL for non-INVITE?
>>>
>>The thing we want to get rid of is the usage in the client, and the
>>processing that, in theory, would need to happen in the server if this was
>>more than a no-op. For example, cancelling a SUBSCRIBE or something would
>>cause the subscription state to be destroyed, and a 487 to the SUBSCRIBE to
>>be sent. With the proposal, the server just 200 OKs the CANCEL, and
>>otherwise ignores it. No deletion of state. No generating of a special
>>response to SUBSCRIBE.
>>
>>>- Under the current model, non-INVITE transactions can have non-zero
>>>duration, if you return a 1xx response. Thus, it is at least
>>>conceivable
>>>that there are methods where the CANCEL could actually accomplish
>>>something.
>>>
>>Well, except that you still need to cotninue retransmitting the request at
>>5s intervals to trigger a response. This is wasteful, and results in slow
>>transactions. I had thought that we had agreed as a group that non-INVITE
>>requests really needed to be responded to immediately to be effective.
>>
>>-Jonathan R.
>>
>>---
>>Jonathan D. Rosenberg, Ph.D.                72 Eagle Rock Ave.
>>Chief Scientist                             First Floor
>>dynamicsoft                                 East Hanover, NJ 07936
>>jdrosen@dynamicsoft.com                     FAX:   (973) 952-5050
>>http://www.jdrosen.net                      PHONE: (973) 952-5000
>>http://www.dynamicsoft.com
>>
>>_______________________________________________
>>Sip mailing list  http://www1.ietf.org/mailman/listinfo/sip
>>This list is for NEW development of the core SIP Protocol
>>Use sip-implementors@cs.columbia.edu for questions on current sip
>>Use sipping@ietf.org for new developments on the application of sip
>>
>>

-- 

Suheel Hussain
ssh@cisco.com
Cisco Work # (919) 392-2312