Re: [dispatch] draft-kaplan-dispatch-domain-registration should use a different method

"Kevin P. Fleming" <kpfleming@digium.com> Wed, 28 October 2009 14:03 UTC

Return-Path: <kpfleming@digium.com>
X-Original-To: dispatch@core3.amsl.com
Delivered-To: dispatch@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 4A49A3A6782 for <dispatch@core3.amsl.com>; Wed, 28 Oct 2009 07:03:09 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -104.33
X-Spam-Level:
X-Spam-Status: No, score=-104.33 tagged_above=-999 required=5 tests=[AWL=0.977, BAYES_00=-2.599, MISSING_HEADERS=1.292, RCVD_IN_DNSWL_MED=-4, USER_IN_WHITELIST=-100]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id DHAS5De3UhXY for <dispatch@core3.amsl.com>; Wed, 28 Oct 2009 07:03:08 -0700 (PDT)
Received: from mail.digium.com (mail.digium.com [216.207.245.2]) by core3.amsl.com (Postfix) with ESMTP id 2802928C10C for <dispatch@ietf.org>; Wed, 28 Oct 2009 07:03:08 -0700 (PDT)
Received: from jupiler.digium.internal ([10.19.29.150] helo=jupiler.digium.com) by mail.digium.com with esmtp (Exim 4.69) (envelope-from <kpfleming@digium.com>) id 1N397S-0002da-N3 for dispatch@ietf.org; Wed, 28 Oct 2009 09:03:22 -0500
Received: from localhost (localhost.localdomain [127.0.0.1]) by jupiler.digium.com (Postfix) with ESMTP id A850C29E0002 for <dispatch@ietf.org>; Wed, 28 Oct 2009 09:03:22 -0500 (CDT)
Received: from jupiler.digium.com ([127.0.0.1]) by localhost (jupiler.digium.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id wXeewRdQfCZt for <dispatch@ietf.org>; Wed, 28 Oct 2009 09:03:22 -0500 (CDT)
Received: from [10.24.250.46] (unknown [10.24.250.46]) (Authenticated sender: kpfleming) by jupiler.digium.com (Postfix) with ESMTP id D71E929E0001 for <dispatch@ietf.org>; Wed, 28 Oct 2009 09:03:21 -0500 (CDT)
Message-ID: <4AE84F28.3040008@digium.com>
Date: Wed, 28 Oct 2009 09:03:20 -0500
From: "Kevin P. Fleming" <kpfleming@digium.com>
Organization: Digium, Inc.
User-Agent: Thunderbird 2.0.0.23 (X11/20090817)
MIME-Version: 1.0
CC: DISPATCH <dispatch@ietf.org>
References: <22A4515E-F613-49F3-8079-1142FB390113@cisco.com> <1256589116.3748.73.camel@khone.us.nortel.com>
In-Reply-To: <1256589116.3748.73.camel@khone.us.nortel.com>
X-Enigmail-Version: 0.95.7
OpenPGP: id=05FB8DB2
Content-Type: text/plain; charset="ISO-8859-1"
Content-Transfer-Encoding: 7bit
Subject: Re: [dispatch] draft-kaplan-dispatch-domain-registration should use a different method
X-BeenThere: dispatch@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: DISPATCH Working Group Mail List <dispatch.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/dispatch>, <mailto:dispatch-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dispatch>
List-Post: <mailto:dispatch@ietf.org>
List-Help: <mailto:dispatch-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dispatch>, <mailto:dispatch-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 28 Oct 2009 14:03:09 -0000

Dale Worley wrote:

(/me hesitantly jumps into the fray)

> d. Using a new method avoids the dangerously ill-structured process of
> using one method for requesting multiple activities that are
> almost-but-not-quite the same.
> 
> Let us compare the situation with that of REFER.  At last count, there
> were five distinct uses of the REFER method.  Each is distinguished by
> specific combinations of header fields and features of the context
> within which the REFER is received.  This leads to several undesirable
> consequences:
> 
> - The code at the UAS is no simpler, as there need to be five different
> code paths, one for each version of REFER.  Currently, the dispatching
> is done by examining the context of the REFER, whereas if there were
> five methods, dispatching could be done by method name.
> 
> - Because the rules for distinguishing the five cases are not explicit,
> implementers may easily make mistakes coding the dispatching.
> 
> - Because the function of a REFER is determined by context, a REFER that
> is accidentally sent in a different context than which was intended may
> not be detected as an error and may cause inadvertent actions.
> 
> - If there were separate method names, then each of the five code paths
> could continue to examine the context of the request, but as a validity
> check rather than as a dispatching decision.
> 
> - Different uses of REFER have subtly different constraints on valid
> values for the various header fields.

I agree with Dale's points here rather strongly; when writing the UAS
code to handle requests, it is much more logical and straightforward to
inspect option tags and header fields when the purpose of doing so is
sanity checking and for subtly adjusting the behavior of the request.
When the option tags and/or header field values are used to cause a
different operation to be performed, the code gets much more complex and
harder to maintain.

On the UAC side, I can't see how the need to take the existing
(pre-standard) code and modify it to use a new method name is going to
be any more burden than modifying that same code to conform to the
standard... since there are very few (if any) existing implementations
that already conform to the proposed standard. The UAC side of this
proposal is very easy to implement in either case.

I haven't seen any comments in this thread about how the re-use of
REGISTER for a different purpose would affect proxies in the route path;
if a proxy has to inspect option tags and header values to decide how to
route a request, that increases complexity as well, which is avoided if
the request uses a different method.

-- 
Kevin P. Fleming
Digium, Inc. | Director of Software Technologies
445 Jan Davis Drive NW - Huntsville, AL 35806 - USA
skype: kpfleming | jabber: kpfleming@digium.com
Check us out at www.digium.com & www.asterisk.org