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

Kim Liu <kliu@lucent.com> Thu, 23 August 2001 17:26 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 NAA27692 for <sip-archive@odin.ietf.org>; Thu, 23 Aug 2001 13:26:55 -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 NAA14266; Thu, 23 Aug 2001 13:13:20 -0400 (EDT)
Received: from ietf.org (odin [132.151.1.176]) by optimus.ietf.org (8.9.1a/8.9.1) with ESMTP id NAA14237 for <sip@ns.ietf.org>; Thu, 23 Aug 2001 13:13:18 -0400 (EDT)
Received: from daimanta.ascend.com (daimanta.bos.ascend.com [152.148.40.20]) by ietf.org (8.9.1a/8.9.1a) with ESMTP id NAA27493 for <sip@ietf.org>; Thu, 23 Aug 2001 13:12:01 -0400 (EDT)
Received: from reddog.casc.com (reddog.ascend.com [152.148.100.22]) by daimanta.ascend.com (8.9.3/8.9.3) with ESMTP id NAA29456; Thu, 23 Aug 2001 13:12:49 -0400 (EDT)
Received: from lucent.com ([152.148.210.204]) by reddog.casc.com (8.8.8+Sun/8.8.8) with ESMTP id MAA29691; Thu, 23 Aug 2001 12:45:14 -0400 (EDT)
Message-ID: <3B853990.92A26E8F@lucent.com>
Date: Thu, 23 Aug 2001 13:12:48 -0400
From: Kim Liu <kliu@lucent.com>
Organization: Lucent Technologies
X-Mailer: Mozilla 4.72 [en] (X11; I; SunOS 5.8 sun4u)
X-Accept-Language: en
MIME-Version: 1.0
To: Jonathan Rosenberg <jdrosen@dynamicsoft.com>
CC: "'sip@ietf.org'" <sip@ietf.org>
Subject: Re: [Sip] Open Issue #7: CANCEL for non-INVITE
References: <B65B4F8437968F488A01A940B21982BF020D662A@DYN-EXCH-001.dynamicsoft.com>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Content-Transfer-Encoding: 7bit
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
Content-Transfer-Encoding: 7bit

Jonathan Rosenberg wrote:
[deleted]
> 
> So, here is the first. Issue #7: CANCEL for non-INVITE.
> 
> Issue description: Currently, bis allows for CANCEL for all methods, not
> just INVITE. This made sense way back when, before we recognized that all
> non-INVITE methods really need to complete immediately. However, if all
> INVITEs are supposed to complete right away (i.e., the server immediately
> generates a response, and shouldn't wait for user input), the usage of
> CANCEL becomes a race condition. Whether the response is cancelled or not
> depends on whether or not the CANCEL beats the server's generation of a
> response. The argument has been made, and its a good one, that specifying a
> mechanism thats ALWAYS a race condition is futile.
> 
> What is the cost? Some have argued that its nothing, since its harder to
> special case INVITE. However, I suspect there is a real cost on the server
> side. It now must have logic that tells it how to undo anything it might
> have done for a particular method before sending the final response. Yuck.
> 
> The one point of contention at the meeting was whether CANCEL is useful for
> stopping timed-out transactions. That is, I send a SUBSCRIBE, and never get
> a response. After 16s (or whatever it is), I send CANCEL to terminate it,
> because I never got a response. However, I think that this is not a good
> argument. Since the server is supposed to respond immediately anway, sending
> CANCEL won't help trigger a response, since there is clearly some big error
> thats preventing the response from coming anyway. Others argued that errors
> can happen for lots of reasons, so perhaps the CANCEL will help.
> 
> My proposal was that we should deprecate CANCEL for non-INVITE. The benefit
> is not even quantifiable, at best, and the cost seems high. Of course, for
> backwards compatibility, a server should not complain if it gets a CANCEL
> for a non-invite, just respond 200 OK (or even 405 is OK) and thats it. It
> should have responded to the request anyway.
> 
> There was mild consensus on this, but some key participants disagreed.
> Please, speak up and lets resolve this.

Limit CANCEL for INVITE only.  Trying to handle CANCELs
for all/arbitrary methods otherwise is going to be prohibitively
complex task -- it will end up as a bunch of special
cases -- i.e. if CANCEL is allowed for all methods,
how do you treat a CANCEL for a CANCEL?  A CANCEL for
a BYE?  A CANCEL for an ACK?  That's ridiculous --
you automatically end up with more special cases for
handling CANCEL to handle CANCELs for methods where
CANCEL makes no sense.

It's a case of confusing an application specific
signal (trying to stop a service/application started
by another method) with a generic procotol level
signal (CANCEL).  Since only INVITE and BYE can
start/change/stop a call, every other method almost
has to be an application or service specific 
invocation, rather than session affecting -- if
this assumption is made, then CANCEL, as a session
level signal, is not apropriate for halting a
service.

Kim

_______________________________________________
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