Subject: [Technical Errata Reported] RFC7540 (4535)

From: RFC Errata System <[email-masked]>
Date: Tue, 17 Nov 2015 08:59:16 -0800 (PST)

The following errata report has been submitted for RFC7540,
"Hypertext Transfer Protocol Version 2 (HTTP/2)".

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

--------------------------------------
Type: Technical
Reported by: Erik Schnell <[email-masked]>

Section: GLOBAL

Original Text
-------------

Corrected Text
--------------

Notes
-----
Section 5.1 (fig. 2) and section 6.6 are contradictory. While the figure in 5.1 shows a transition from \\"idle\\" to \\"reserved (local)\\" on a PUSH_PROMISE receive, section 6.6 mentions:
\\"A sender MUST NOT send a PUSH_PROMISE on a stream unless that stream is either \\"open\\" or \\"half-closed (remote)\\"
AND
\\"PUSH_PROMISE frames MUST only be sent on a peer-initiated stream that is in either the \\"open\\" or \\"half-closed (remote)\\" state.\\"

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. 

--------------------------------------
RFC7540 (draft-ietf-httpbis-http2-17)
--------------------------------------
Title               : Hypertext Transfer Protocol Version 2 (HTTP/2)
Publication Date    : May 2015
Author(s)           : M. Belshe, R. Peon, M. Thomson, Ed.
Category            : PROPOSED STANDARD
Source              : Hypertext Transfer Protocol Bis APP
Area                : Applications
Stream              : IETF
Verifying Party     : IESG

---

From: Martin Thomson <[email-masked]>
Date: Tue, 17 Nov 2015 09:20:40 -0800

This appears to be a fairly common misunderstanding. PUSH_PROMISE is sent
on one stream, but affects the state of the promised stream rather than the
one it is sent on.
On Nov 17, 2015 9:00 AM, "RFC Errata System" <[email-masked]>
wrote:

> Section 5.1 (fig. 2) and section 6.6 are contradictory. While the figure
> in 5.1 shows a transition from \\"idle\\" to \\"reserved (local)\\" on a
> PUSH_PROMISE receive, section 6.6 mentions:
> \\"A sender MUST NOT send a PUSH_PROMISE on a stream unless that stream is
> either \\"open\\" or \\"half-closed (remote)\\"
> AND
> \\"PUSH_PROMISE frames MUST only be sent on a peer-initiated stream that
> is in either the \\"open\\" or \\"half-closed (remote)\\" state.\\"
>
> Instructions:
> -------------

---

From: Mike Bishop <[email-masked]>
Date: Tue, 17 Nov 2015 17:25:53 +0000

Not an error, but a lack of resolution in the figure.  As the text states, PUSH_PROMISE can only be sent on a peer-initiated stream in the "open" or "half-closed (remote)" state.  Receipt of that PUSH_PROMISE causes *the promised steam* to transition from "idle" to "reserved."  The figure correctly indicates that the PUSH_PROMISE frame causes that transition, but lacks the resolution to show that the PUSH_PROMISE occurred on a different stream not in the idle state.

-----Original Message-----
From: RFC Errata System [mailto:[email-masked]] 
Sent: Tuesday, November 17, 2015 8:59 AM
To: [email-masked]; [email-masked]; [email-masked]; [email-masked]; [email-masked]
Cc: [email-masked]; [email-masked]; [email-masked]
Subject: [Technical Errata Reported] RFC7540 (4535)

The following errata report has been submitted for RFC7540, "Hypertext Transfer Protocol Version 2 (HTTP/2)".

Section: GLOBAL

Original Text
-------------

Corrected Text
--------------

Notes
-----

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.

---

From: Yoav Nir <[email-masked]>
Date: Tue, 17 Nov 2015 22:24:32 +0200

Right. So I guess the right thing to do is to amend the report to add to the notes section as follows:

A note should be added to figure 2 in section 5.1 clarifying that where a push-promise is sent or received, the state diagram is for the promised stream, not the original stream.

Then the errata report can be closed as “held for future update”, meaning that if anyone ever gets to writing a new version of 7540, they should fix this as well.

Yoav

> On 17 Nov 2015, at 7:25 PM, Mike Bishop <[email-masked]> wrote:
>

---

From: Barry Leiba <[email-masked]>
Date: Tue, 17 Nov 2015 17:58:38 -0700

I'm happy to do that if that's the consensus.  Martin, does that make sense
to you?

Barry

On Tuesday, November 17, 2015, Yoav Nir <[email-masked]> wrote:

> A note should be added to figure 2 in section 5.1 clarifying that where a
> push-promise is sent or received, the state diagram is for the promised
> stream, not the original stream.
>
> Then the errata report can be closed as “held for future update”, meaning
> that if anyone ever gets to writing a new version of 7540, they should fix
> this as well.
>
> Yoav
>
> > On 17 Nov 2015, at 7:25 PM, Mike Bishop <[email-masked]
> <javascript:;>> wrote:
> >
> > Not an error, but a lack of resolution in the figure.  As the text
> states, PUSH_PROMISE can only be sent on a peer-initiated stream in the
> "open" or "half-closed (remote)" state.  Receipt of that PUSH_PROMISE
> causes *the promised steam* to transition from "idle" to "reserved."  The
> figure correctly indicates that the PUSH_PROMISE frame causes that
> transition, but lacks the resolution to show that the PUSH_PROMISE occurred
> on a different stream not in the idle state.
> >
> > From: RFC Errata System [mailto:[email-masked] <javascript:;>
> ]
> > To: [email-masked] <javascript:;>; [email-masked] <javascript:;>;
> [email-masked] <javascript:;>; [email-masked]
> <javascript:;>; [email-masked] <javascript:;>
> > Cc: [email-masked] <javascript:;>; [email-masked]
> <javascript:;>; [email-masked] <javascript:;>
> > Reported by: Erik Schnell <[email-masked] <javascript:;>>
> >
> > Section: GLOBAL
> >
> > Original Text
> > -------------
> >
> >
> > Corrected Text
> > --------------
> >
> >
> > Notes
> > -----
> > \\"A sender MUST NOT send a PUSH_PROMISE on a stream unless that stream
> is either \\"open\\" or \\"half-closed (remote)\\"
> > AND
> > 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.
> >

---

From: Martin Thomson <[email-masked]>
Date: Wed, 18 Nov 2015 11:35:53 -0800

> I'm happy to do that if that's the consensus.  Martin, does that make sense

Yes, that is a fine thing to do.