Subject: [Editorial Errata Reported] RFC7230 (4205)

From: RFC Errata System <[email-masked]>
Date: Tue, 23 Dec 2014 06:16:09 -0800 (PST)

The following errata report has been submitted for RFC7230,
"Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing".

--------------------------------------
You may review the report below and at:
http://www.rfc-editor.org/errata_search.php?rfc=7230&eid=4205

--------------------------------------
Type: Editorial
Reported by: Semyon Kholodnov <[email-masked]>

Section: 6.3

Original Text
-------------
   o  If the received protocol is HTTP/1.0, the "keep-alive" connection
      option is present, the recipient is not a proxy, and the recipient
      wishes to honor the HTTP/1.0 "keep-alive" mechanism, the
      connection will persist after the current response; otherwise,

Corrected Text
--------------
   o  If the received protocol is HTTP/1.0, the "keep-alive" connection
      option is present, either the recipient is not a proxy or the 
      message is a response, and the recipient wishes to honor the 
      HTTP/1.0 "keep-alive" mechanism, the connection will persist after
      the current response; otherwise,

Notes
-----
This bullet is clearly intended to be there to introduce "A proxy server MUST NOT maintain a persistent connection with an HTTP/1.0 client" requirement later in the text; however, as it's worded, it technically also prohibits HTTP/1.1-proxies to maintain a persistent connection with an HTTP/1.0 *server*.

Instructions:
-------------
This erratum is currently posted as "Reported". If necessary, please
use "Reply All" to discuss whether it should be verified or
rejected. When a decision is reached, the verifying party (IESG)
can log in to change the status and edit the report, if necessary. 

--------------------------------------
RFC7230 (draft-ietf-httpbis-p1-messaging-26)
--------------------------------------
Title               : Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing
Publication Date    : June 2014
Author(s)           : R. Fielding, Ed., J. Reschke, Ed.
Category            : PROPOSED STANDARD
Source              : Hypertext Transfer Protocol Bis
Area                : Applications
Stream              : IETF
Verifying Party     : IESG

---

From: Barry Leiba <[email-masked]>
Date: Tue, 23 Dec 2014 10:39:34 -0500

I don't see the problem here.  You do have to read the paragraphs
before the bullet list, which clearly talk about the request/response
pair -- there's no danger of reading this to mean that a connection
will be closed between the two.  Apart from that, no, this bullet is
not meant to introduce the later "MUST NOT"; these bullets clearly
state the conditions under which connections remain persistent,
independent of other advice about how to make that happen.

Roy or Julian, do you see a need for any change here?

Barry

---

From: Barry Leiba <[email-masked]>
Date: Tue, 23 Dec 2014 12:21:49 -0500

> that the rules prohibit the following scenario: an HTTP/1.1 proxy
> sends an HTTP/1.1-request to an HTTP/1.0-server (the proxy knows  by
> some means that the server is an origin server of HTTP/1.0 version)
> with "Connection: keep-alive" header, the server sends an
> HTTP/1.0-response with "Connection: keep-alive" header in it.
>
> This response is current, and the bullets mandate that the connection
> will close after receiving it: the first bullet doesn't apply since
> the "close" option is not present, second bullet doesn't apply because
> the received protocol is HTTP/1.0, the third bullet does not apply
> since the recipient *is* a proxy, and thus the final bullet "The
> connection will close after the current response" applies.

I think you're wrong, and I was trying to convey that before.  The
third bullet does apply, because the recipient is not a proxy: it's a
server.  The initiator is a proxy; the recipient is not.  These
bullets are talking about request/response transactions, not about
individual response messages.  I think that's made clear in the
paragraphs that precede the bullets.

Roy and Julian should, of course, weigh in on this, though.

Barry

---

From: "Roy T. Fielding" <[email-masked]>
Date: Wed, 24 Dec 2014 11:44:24 -0800

> "Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing".

Verified as editorial.  The corrected text should be

  o  If the received protocol is HTTP/1.0, the "keep-alive" connection
     option is present in a message that is not a request to a proxy,
     and the recipient wishes to honor the HTTP/1.0 "keep-alive" mechanism,
     the connection will persist after the current response; otherwise,

Thanks for the report.  I don't consider this a significant issue because
it is just talking about when a connection can be expected to remain
persistent, whereas the actual requirements on when a connection must be
closed are specified elsewhere.

....Roy

---

From: Barry Leiba <[email-masked]>
Date: Wed, 24 Dec 2014 15:09:08 -0500

I can buy that change, as a reasonable clarification.  I can edit the new
text when I verify the report.  Semyon, does that work for you?

Barry

On Wednesday, December 24, 2014, Roy T. Fielding <[email-masked]> wrote:

> > Reported by: Semyon Kholodnov <[email-masked] <javascript:;>>
> >
> > Section: 6.3
> >
> > Original Text
> > -------------
> > This bullet is clearly intended to be there to introduce "A proxy server
> MUST NOT maintain a persistent connection with an HTTP/1.0 client"
> requirement later in the text; however, as it's worded, it technically also
> prohibits HTTP/1.1-proxies to maintain a persistent connection with an
> HTTP/1.0 *server*.
>