Re: [lemonade] draft-gulbrandsen-imap-enable-03

Ned Freed <ned.freed@mrochek.com> Tue, 20 November 2007 18:56 UTC

Return-path: <lemonade-bounces@ietf.org>
Received: from [127.0.0.1] (helo=stiedprmman1.va.neustar.com) by megatron.ietf.org with esmtp (Exim 4.43) id 1IuYGl-0004Yp-BX; Tue, 20 Nov 2007 13:56:23 -0500
Received: from lemonade by megatron.ietf.org with local (Exim 4.43) id 1IuYGk-0004Yk-Sl for lemonade-confirm+ok@megatron.ietf.org; Tue, 20 Nov 2007 13:56:22 -0500
Received: from [10.91.34.44] (helo=ietf-mx.ietf.org) by megatron.ietf.org with esmtp (Exim 4.43) id 1IuYGk-0004Yc-J9 for lemonade@ietf.org; Tue, 20 Nov 2007 13:56:22 -0500
Received: from dsl-66-59-230-40.static.linkline.com ([66.59.230.40] helo=mauve.mrochek.com) by ietf-mx.ietf.org with esmtp (Exim 4.43) id 1IuYGg-0004as-5K for lemonade@ietf.org; Tue, 20 Nov 2007 13:56:22 -0500
Received: from dkim-sign.mauve.mrochek.com by mauve.mrochek.com (PMDF V6.1-1 #35243) id <01MNY338117400G9Q4@mauve.mrochek.com> for lemonade@ietf.org; Tue, 20 Nov 2007 10:56:09 -0800 (PST)
Received: from mauve.mrochek.com by mauve.mrochek.com (PMDF V6.1-1 #35243) id <01MNWVHAV96800GULE@mauve.mrochek.com>; Tue, 20 Nov 2007 10:56:06 -0800 (PST)
Message-id: <01MNY336A8QY00GULE@mauve.mrochek.com>
Date: Tue, 20 Nov 2007 10:40:42 -0800
From: Ned Freed <ned.freed@mrochek.com>
Subject: Re: [lemonade] draft-gulbrandsen-imap-enable-03
In-reply-to: "Your message dated Tue, 20 Nov 2007 10:33:16 -0800" <p06240602c368d49cecb9@[192.168.1.13]>
MIME-version: 1.0
Content-type: TEXT/PLAIN; format="flowed"
References: <472B04FD.9020100@andrew.cmu.edu> <iI49OBVsjABTB7dA9GtwCA.md5@libertango.oryx.com> <473487D3.4020002@isode.com> <01a601c822f5$7c13bf60$743b3e20$%coates@sun.com> <4734AEF8.4090201@isode.com> <p06240602c368d49cecb9@[192.168.1.13]>
To: Randall Gellens <randy@qualcomm.com>
DKIM-Signature: a=rsa-sha1; c=nowsp; d=mrochek.com; s=mauve; t=1195584968; h=Date: From:Subject:MIME-version:Content-type; b=bLYLEYvnNLRepR9YiOJgYfKPX 80KMA+Z7CvwWJxNcuU5nYoqVPz1hKAxTBHIlzUw+deodHeIATCETYXfOoU1/w==
X-Spam-Score: 0.1 (/)
X-Scan-Signature: 8de5f93cb2b4e3bee75302e9eacc33db
Cc: lemonade@ietf.org, Alexey Melnikov <alexey.melnikov@isode.com>, Peter Coates <peter.coates@sun.com>, Ned Freed <ned.freed@mrochek.com>, ietf-imapext@imc.org
X-BeenThere: lemonade@ietf.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Enhancements to Internet email to support diverse service enivronments <lemonade.ietf.org>
List-Unsubscribe: <https://www1.ietf.org/mailman/listinfo/lemonade>, <mailto:lemonade-request@ietf.org?subject=unsubscribe>
List-Post: <mailto:lemonade@ietf.org>
List-Help: <mailto:lemonade-request@ietf.org?subject=help>
List-Subscribe: <https://www1.ietf.org/mailman/listinfo/lemonade>, <mailto:lemonade-request@ietf.org?subject=subscribe>
Errors-To: lemonade-bounces@ietf.org

> At 7:03 PM +0000 11/9/07, Alexey Melnikov wrote:

> >>  Thus the sequence should be either
> >>  C: t1 CAPABILITY
> >>  S: * CAPABILITY IMAP4rev1 AUTH=CRAM-MD5 AUTH=DIGEST-MD5 ID LITERAL+ ENABLE
> >>  S: t1 OK foo
> >>  C: t2 ENABLE CONDSTORE X-GOOD-IDEA
> >>  S: t2 OK foo
> >>  C: t3 CAPABILITY
> >>  S: * CAPABILITY IMAP4rev1 AUTH=CRAM-MD5 AUTH=DIGEST-MD5 ID LITERAL+ ENABLE
> >>  CONDSTORE
> >>  S: t3 OK foo again
> >>
> >  I dislike that, because you now implicitly saying that there are
> > magic extensions which don't work unless the client knows how to
> > enable them. Really, the server should have advertised the
> > CONDSTORE extension to begin with.

> I agree.

> The client shouldn't have to parse both the CAPABILITY response and
> the ENABLE response to learn if an extension has been negotiated.  If
> we put all ENABLEable extensions in the CAPABILITY response, then the
> response to ENABLE can be OK even if it contains unknown extensions.

> At 2:42 PM -0800 11/9/07, Ned Freed wrote:
> >  My personal preference is to have the initial capability list not list things
> >  that can be enabled, have enable turn on whatit can and ignore the rest, and
> >  have any enabled changes show up in subsequent capability lists. This
> >  leverages existing protocol features and doesn't invent new syntax or
> >  require multiple commands.

> Why do you prefer not having ENABLEable extensions in the initial
> CAPABILITY response?

Because it removes the ability to use the response to determine what is or is
not enabled.

> At 7:59 AM -0800 11/10/07, Ned Freed wrote:
> >  One problem is that this presumes that enable will always succeed
> > for anything
> >  that was previousliy listed as a capability. This strikes me as risky - there
> >  could be things where the server cannot tell there's  a problem enabling it
> >  until it actually goes through the steps of doing so.
> >
> >  I strongly prefer a model where it is possible to check to see what's turned
> >  on and what is not.

> >  In my approach the client authenticates and then sends the enable command
> >  followed by a capability command to see the results of the enable.

> So ENABLE returns OK even if some extensions are not known or
> couldn't be turned on for whatever reason (temporary failure of a
> resource perhaps).  The post-authentication post-ENABLE CAPABILITY
> response omits anything that failed during ENABLE.  So a
> post-authentication pre-ENABLE CAPABILITY response may be different
> from a post-authentication post-ENABLE CAPABILITY response.  That
> seems a little odd, but it may be easier on the client, since the
> client only has to parse the CAPABILITY response, not the ENABLE
> response.  But it does effectively force the sequence
> CAPABILITY-authentication-ENABLE-CAPABILITY.

Correct, but clients already have to look at capabilitiez after authentication
so this adds no overhead.

No matter how you slice it the client has to be able to determine what's
enabled - the present situation as I understand is unacceptable since
situations can arise where the client doesn't know what's on and what's off.
The three options as I seee it are:

(1) Have enable return this information as some sort of extended response.
(2) have the client send multiple enables and use the response status to
    determine success or failure.
(3) Piggyback this on the existing capabilities mechanism.

I believe (3) is the simplest by far from a client perspective. An existing,
compliant client need only add code to send a single enable command (which can
even have a fixed set of arguments). The client then uses the capability
response it already has to find out what extensions it can use, and more
importantly what changes those extenaions have made to the syntax and semantics
of server responses.

If we don't do (3) I think the only viable alternative is (1). (2) looks an
awful lot like telnet option negiation to me, which hasn't worked all that
well.

> At 10:25 AM -0800 11/10/07, Ned Freed wrote:
> >  Nothing prevents us from requiring ENABLE in order to use extensions that
> >  change command response syntax. In fact I think such a requirement would be a
> >  very good idea.

> I agree, but this requires a revision to CONDSTORE that deprecates
> the current extension and defines a new one, doesn't it?

Yes, but IMO that's a good thing.

				Ned


_______________________________________________
lemonade mailing list
lemonade@ietf.org
https://www1.ietf.org/mailman/listinfo/lemonade
Supplemental Web Site:
http://www.standardstrack.com/ietf/lemonade