Re: [imapext] AD review of draft-ietf-imapapnd-rfc2088bis-03

Alexey Melnikov <aamelnikov@fastmail.fm> Sat, 05 March 2016 08:07 UTC

Return-Path: <aamelnikov@fastmail.fm>
X-Original-To: imapext@ietfa.amsl.com
Delivered-To: imapext@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 21D031A1A03 for <imapext@ietfa.amsl.com>; Sat, 5 Mar 2016 00:07:07 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.7
X-Spam-Level:
X-Spam-Status: No, score=-2.7 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Y_4hbpgqMHKK for <imapext@ietfa.amsl.com>; Sat, 5 Mar 2016 00:07:05 -0800 (PST)
Received: from out5-smtp.messagingengine.com (out5-smtp.messagingengine.com [66.111.4.29]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id C7AF01A039B for <imapext@ietf.org>; Sat, 5 Mar 2016 00:07:04 -0800 (PST)
Received: from compute1.internal (compute1.nyi.internal [10.202.2.41]) by mailout.nyi.internal (Postfix) with ESMTP id 4070D207C3 for <imapext@ietf.org>; Sat, 5 Mar 2016 03:07:04 -0500 (EST)
Received: from frontend2 ([10.202.2.161]) by compute1.internal (MEProxy); Sat, 05 Mar 2016 03:07:04 -0500
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=fastmail.fm; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to:x-sasl-enc :x-sasl-enc; s=mesmtp; bh=xGF5MDvprJss/Xtk+nWdSzlQOPM=; b=Gaqsup sIUga0o10BMQIFUMIF4CS2mQLTL61kQMY5lKvyJFX2qGUO08oeKKeCLWTy0vN5oY Z+vK6HXC++J6vkpvtH67YIb22LARrlKG3c3P4RFrllD4J+pkdGCR09E5arYEi7nt LmRy4YmtWHcH89B9OXEtRl37rZ32bqpRyUPj4=
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-transfer-encoding:content-type :date:from:in-reply-to:message-id:mime-version:references :subject:to:x-sasl-enc:x-sasl-enc; s=smtpout; bh=xGF5MDvprJss/Xt k+nWdSzlQOPM=; b=FKrHf05ZRitsM/UCZHprd5tbzeNjeaTt6Vb6CYEebHkUQCT sqC55jPZuL8O1W1odYj6QYWUV2xkg89HdExDxLOoZbEaA+qdlHeYg38gya8sIug5 OK2tw3baJXsErsJofYXJUQ1B7XYH8QucrMI8H5dP3UyUYBj/eTcDVaqxRfsA=
X-Sasl-enc: HrM8QfC9BiOJmZTaLV7fjawdHBOrUaa3tp3Ry1HxWcVb 1457165223
Received: from [10.230.244.212] (unknown [85.255.234.57]) by mail.messagingengine.com (Postfix) with ESMTPA id 864F0680123; Sat, 5 Mar 2016 03:07:03 -0500 (EST)
Content-Type: text/plain; charset="us-ascii"
Mime-Version: 1.0 (1.0)
From: Alexey Melnikov <aamelnikov@fastmail.fm>
X-Mailer: iPhone Mail (13D15)
In-Reply-To: <CALaySJJxkYW+w1wY7NNH73P5qXoxutYz2VeM4E23BG0U_U5p5g@mail.gmail.com>
Date: Sat, 05 Mar 2016 08:08:42 +0000
Content-Transfer-Encoding: quoted-printable
Message-Id: <1011FF8D-99AC-491F-A12A-B3DBAD55FAE9@fastmail.fm>
References: <CALaySJJxkYW+w1wY7NNH73P5qXoxutYz2VeM4E23BG0U_U5p5g@mail.gmail.com>
To: Barry Leiba <barryleiba@computer.org>
Archived-At: <http://mailarchive.ietf.org/arch/msg/imapext/hZpUsuoM4DqZILZNZxFUwHK0190>
X-Mailman-Approved-At: Sun, 06 Mar 2016 07:05:15 -0800
Cc: "imapext@ietf.org" <imapext@ietf.org>
Subject: Re: [imapext] AD review of draft-ietf-imapapnd-rfc2088bis-03
X-BeenThere: imapext@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Discussion of IMAP extensions <imapext.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/imapext>, <mailto:imapext-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/imapext/>
List-Post: <mailto:imapext@ietf.org>
List-Help: <mailto:imapext-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/imapext>, <mailto:imapext-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sat, 05 Mar 2016 08:07:07 -0000

Hi Barry,
Thank you for your review.

> On 4 Mar 2016, at 23:03, Barry Leiba <barryleiba@computer.org> wrote:
> 
> Here's my review of draft-ietf-imapapnd-rfc2088bis-03.  Much of this
> is editorial, but there are a couple of substantive things here.
> 
> -- Introduction --
> 
> "(RFC 3501)" should be a citation, "[RFC3501]".  (And then you can
> remove the citation at the beginning of Section 3, if you like (or
> leave it, if you prefer).)
> 
> -- Section 3 --
> 
>   If the server does
>   not advertise either of the above capabilities, the client must use
>   synchronizing literals instead.
> 
> Minor point, but I'd word this like this (because I find "instead" to
> be a bit inapt):
> 
> NEW
>   If the server does
>   not advertise either of the above capabilities, the client can only
>   use synchronizing literals.
> END
> 
>   The protocol receiver of an IMAP server must check the end of every
>   received line
> 
> That "must" should probably be "MUST".
> 
> We probably should also take this opportunity to fix a bit of
> confusion that's come up with respect to this paragraph in the past.
> How about this?:
> 
> OLD
>   The protocol receiver of an IMAP server must check the end of every
>   received line (a sequence of octets that end with a CRLF) for an open
>   brace ('{') followed by an octet count, a plus ('+'), and a close
>   brace ('}') immediately preceeding the CRLF.  If it finds this
>   sequence, it is the octet count of a non-synchronizing literal and
>   the server MUST treat the specified number of following octets and
>   the following line as part of the same command.  A server MAY still
>   process commands and reject errors on a line-by-line basis, as long
>   as it checks for non-synchronizing literals at the end of each line.
> 
> NEW
>   The protocol receiver of an IMAP server MUST check the end of every
>   received line (a sequence of octets that ends with a CRLF) for an
>   open brace ('{') followed by an octet count, a plus ('+'), and a
>   close brace ('}') immediately preceeding the CRLF.  If it finds this
>   sequence, it is the octet count of a non-synchronizing literal and
>   the server MUST treat the specified number of following octets and
>   the following octets through the next CRLF as part of the same
>   command.
> 
>   It's important to note that the literal is not delimited by CRLF.
>   It ends after the number of bytes specified by the octet count, and
>   the current command continues from there.  There might be a CRLF
>   immediately after, which ends the command.  Or there might be more
>   octets, specifying other command parameters, before the CRLF.  If
>   a SPACE character is needed between parameters, it's important that
>   the SPACE appear after the literal, in its appropriate place.
> 
>   A server MAY still process commands and reject errors on a
>   line-by-line basis, as long as it checks for non-synchronizing
>   literals at the end of each line.
> 
> END
> 
> ...and...
> 
> OLD
>  Example:
> 
>   C: A001 LOGIN {11+}
>   C: FRED FOOBAR {7+}
>   C: fat man
>   S: A001 OK LOGIN completed
> 
> NEW
>   Example:
> 
>   C: A001 LOGIN {11+}
>   C: FRED FOOBAR {7+}
>   C: fat man
>   S: A001 OK LOGIN completed
> 
>   This is semantically equivalent to this version that uses quoted
>   strings instead of literals:
> 
>   C: A001 LOGIN "FRED FOOBAR" "fat man"
>   S: A001 OK LOGIN completed
> 
>   Note that the SPACE after FOOBAR in the first version corresponds
>   to the SPACE between the two quoted strings in the second.
> END

These look fine to me.

> I used to get questions from implementors about the CRLF and SPACE
> things.  If you really think this is unnecessary, feel free to opt out
> of this suggestion.

I don't mind adding your text.
> 
> -- Section 4 --
> 
>   a compliant LITERAL+ server
>   implementation has to make a choice between several non-optimal
>   choices:
> 
> There are only two choices, and in no one's reckoning does two count
> as "several".  

I thought several was any number other than 1.

> Maybe change "several" to "two"?
> 
> In bullet 1:
> 
>       (The server is allowed to send the tagged BAD/NO response before
>       reading the whole non-synchronizing literal.)
> 
> Substantive: Shouldn't that be "the server is not allowed" (missing "not")?

No, the sentence is correct as written. Some servers send BAD right after observing the non-synchronising literal prefix and that is Ok.
> 
> Please change "most of commands" to "most commands".
> 
> "Denial Of Service attacks" shouldn't be capitalized, but should be
> hyphenated; make it "denial-of-service attacks" (and similarly, remove
> the capitals in Section 9).

Ok.
> 
> -- Section 5 --
> Substantive: Shouldn't references to "APPEND" be removed from here,
> since we re-spun LITERAL- as applying to all commands?

I double check, but I prefer to keep it.

> Also, the last
> sentence doesn't really make sense.  In order to reject the command
> with BAD and TOOBIG, the server has to read (and discard) the literal
> -- that is, it's already processing according to bullet 1 in Section
> 4.
> 
> So:
> 
> OLD
>   The "LITERAL-" extension is almost identical to "LITERAL+", with one
>   exception: when "LITERAL-" is advertised, non-synchronizing literals
>   used in any command MUST NOT be larger than 4096 bytes.  Any literal
>   larger than 4096 bytes MUST be sent as an RFC 3501 synchronizing
>   literal.  A "LITERAL-" compliant server that encounters a non-
>   synchronizing literal in APPEND larger than 4096 bytes MUST reject
>   such APPEND command with a tagged BAD response that contains the
>   TOOBIG response code [RFC4469].  It then MAY proceed as described in
>   Section 4.
> 
> NEW
>   The "LITERAL-" extension is almost identical to "LITERAL+", with one
>   exception: when "LITERAL-" is advertised, non-synchronizing literals
>   used in any command MUST NOT be larger than 4096 bytes.  Any literal
>   larger than 4096 bytes MUST be sent as an RFC 3501 synchronizing
>   literal.  A "LITERAL-" compliant server that encounters a non-
>   synchronizing literal larger than 4096 bytes MUST read (and discard)
>   the literal, and then reject the command with a tagged BAD response
>   that contains the TOOBIG response code [RFC4469].

Hmm. Or it can close the connection. I will try to reword, as your text seems to imply that that is the only option.
> 
> END
> 
> Substantive: I also suggest adding this paragraph, to make things
> perfectly clear:
> 
> INSERT
>   Note that the form of the non-synchronizing literal does not change:
>   it still uses the "+" in the literal itself, even if the applicable
>   extension is "LITERAL-".
> END

Ok.
> 
> -- Section 9 --
> 
>   Section 4 motivates creation of the "LITERAL-" extension
>   that partially improves the situation.
> 
> I would just say 'The "LITERAL-" extension partially improved this situation.'
> 
> -- Section 10 --
> 
> OLD
>   This document requests that IANA updates the above registry to
>   include the entry for LITERAL+ capability pointing to this document.
> 
> NEW
>   This document requests that IANA update the above registry to
>   replace the reference for LITERAL+ to point to this document.
> 
> END

Yes, good catch.
> 
> (And as a nit, change "adds" to "add" in the next paragraph; it should
> be subjunctive mood.)
> 
> -- 
> Barry, ART Director