RE: draft-gulbrandsen-imap-enable-03

Peter Coates <peter.coates@sun.com> Fri, 02 November 2007 15:16 UTC

Received: from balder-227.proper.com (localhost [127.0.0.1]) by balder-227.proper.com (8.13.5/8.13.5) with ESMTP id lA2FGxYh045755 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Fri, 2 Nov 2007 08:16:59 -0700 (MST) (envelope-from owner-ietf-imapext@mail.imc.org)
Received: (from majordom@localhost) by balder-227.proper.com (8.13.5/8.13.5/Submit) id lA2FGxfk045754; Fri, 2 Nov 2007 08:16:59 -0700 (MST) (envelope-from owner-ietf-imapext@mail.imc.org)
X-Authentication-Warning: balder-227.proper.com: majordom set sender to owner-ietf-imapext@mail.imc.org using -f
Received: from brmea-mail-3.sun.com (brmea-mail-3.Sun.COM [192.18.98.34]) by balder-227.proper.com (8.13.5/8.13.5) with ESMTP id lA2FGw2o045745 for <ietf-imapext@imc.org>; Fri, 2 Nov 2007 08:16:58 -0700 (MST) (envelope-from peter.coates@sun.com)
Received: from fe-amer-09.sun.com ([192.18.109.79]) by brmea-mail-3.sun.com (8.13.6+Sun/8.12.9) with ESMTP id lA2FGw6j006634 for <ietf-imapext@imc.org>; Fri, 2 Nov 2007 15:16:58 GMT
Received: from conversion-daemon.mail-amer.sun.com by mail-amer.sun.com (Sun Java System Messaging Server 6.2-8.04 (built Feb 28 2007)) id <0JQV00G01WCM9G00@mail-amer.sun.com> (original mail from peter.coates@sun.com) for ietf-imapext@imc.org; Fri, 02 Nov 2007 09:16:58 -0600 (MDT)
Received: from kluane ([129.150.37.23]) by mail-amer.sun.com (Sun Java System Messaging Server 6.2-8.04 (built Feb 28 2007)) with ESMTPSA id <0JQV00I7SX3XEM90@mail-amer.sun.com>; Fri, 02 Nov 2007 09:16:46 -0600 (MDT)
Date: Fri, 02 Nov 2007 08:16:20 -0700
From: Peter Coates <peter.coates@sun.com>
Subject: RE: draft-gulbrandsen-imap-enable-03
In-reply-to: <472B04FD.9020100@andrew.cmu.edu>
To: 'Ken Murchison' <murch@andrew.cmu.edu>, lemonade@ietf.org, 'IMAP Extensions WG' <ietf-imapext@imc.org>
Message-id: <013f01c81d63$53778a10$fa669e30$%coates@sun.com>
MIME-version: 1.0
X-Mailer: Microsoft Office Outlook 12.0
Content-type: text/plain; charset="us-ascii"
Content-language: en-ca
Content-transfer-encoding: 7bit
Thread-index: AcgdQ4Yb1/MCvpl2Sh6JSH6CxQYciQAHJ3Gw
References: <472B04FD.9020100@andrew.cmu.edu>
Sender: owner-ietf-imapext@mail.imc.org
Precedence: bulk
List-Archive: <http://www.imc.org/ietf-imapext/mail-archive/>
List-ID: <ietf-imapext.imc.org>
List-Unsubscribe: <mailto:ietf-imapext-request@imc.org?body=unsubscribe>

Let's consider ENABLE and QRESYNC.

Is the QRESYNC capability is in effect for a session, the responses sent by
the server are different from those that would otherwise be sent.  VANISHED
instead of EXPUNGED, for instance.  So, it is important that the server not
use QRESYNC features until told to by the client.

I am really against any extension that can change the protocol during the
life of the session.  I would like to see the protocol negotiated at the
start of the session.

Thus, the server does not advertise QRESYNC initially.  If the client issues
an ENABLE command, and then issues a CAPABILITY command it can try to turn
on the feature and see if the server supported it.

S: * OK [CAPABILITY IMAP4 IMAP4rev1 ACL QUOTA LITERAL+ NAMESPACE UIDPLUS
CHILDREN 
   BINARY UNSELECT SORT IDLE URLAUTH LANGUAGE ESEARCH THREAD=ORDEREDSUBJECT 
   THREAD=REFERENCES CONDSTORE ENABLE CONTEXT WITHIN XSENDER X-NETSCAPE
XSERVERINFO
   X-SUN-SORT ANNOTATE-EXPERIMENT-1 X-UNAUTHENTICATE X-SUN-IMAP
X-ANNOTATEMORE XUM1
   AUTH=PLAIN] sandman.red.iplanet.com IMAP4 service (Sun Java(tm) System
Messaging
   Server 7.0-0.01 32bit (built Oct 26 2007))
C: 1 login YYYYY XXXXX
S: 1 OK User logged in
C: 2 enable qresync foobar
S: 2 OK Completed
C: 3 capability
S: * CAPABILITY IMAP4 IMAP4rev1 ACL QUOTA LITERAL+ NAMESPACE UIDPLUS
CHILDREN 
   BINARY UNSELECT SORT CATENATE URLAUTH LANGUAGE ESEARCH
THREAD=ORDEREDSUBJECT
   THREAD=REFERENCES IDLE ENABLE CONTEXT WITHIN XSENDER X-NETSCAPE
XSERVERINFO
   X-SUN-SORT ANNOTATE-EXPERIMENT-1 X-UNAUTHENTICATE X-SUN-IMAP
X-ANNOTATEMORE XUM1
   CONDSTORE QRESYNC
S: 3 OK Completed

The new capability vector sent after the enable command reflect the new
negotiated protocol level.  I would have liked CONDSTORE to have to be
enabled, but it was too late to do that, and we are stuck with 42 different
ways that the CONDSTORE extension can be enabled. (note that turning on
QRESYNC implies turning on CONDSTORE)

I have argued that the enable command only be allowed near the start of a
session, only at the first command, or as the first command after
authentication, but I do not think I have achieved much traction on that
idea as it implies another state for the protocol engine.  I can see that
that is an attractive argument for some, but if feels a bit academic and
pedantic to me.


Peter

-----Original Message-----
From: owner-ietf-imapext@mail.imc.org
[mailto:owner-ietf-imapext@mail.imc.org] On Behalf Of Ken Murchison
Sent: November 2, 2007 04:08
To: lemonade@ietf.org; IMAP Extensions WG
Subject: draft-gulbrandsen-imap-enable-03


After looking at the current draft on my way towards implementing 
QRESYNC, I'm wondering why ENABLE is allowed to be used blindly.  I 
don't see any reason why ENABLE should be allowed before the client 
knows that a particular extension is supported (via CAPABILITY).

In particular, the second example in section 3 seems strange to me, and 
AFAICT, doing ENABLE before CAPABILITY doesn't gain anything in terms of 
round trips.  I also don't like the fact that we're documenting that 
ENABLE can be used to probe for extensions (as per paragraph 2 in 
section 5).  We already have a command to list extensions.

If we specify that a client MUST NOT try to enable an extension that 
isn't listed by CAPABILITY, then all the server has to worry about 
parsing are those extensions that it supports and are enable-able. 
Trying to ENABLE any other other extensions, whether unknown, 
unenable-able, or unsupported can all result in BAD.

-- 
Kenneth Murchison
Systems Programmer
Project Cyrus Developer/Maintainer
Carnegie Mellon University