Subject: sending WINDOW_UPDATE when in reserved (remote)

From: Patrick McManus <[email-masked]>
Date: Thu, 23 Oct 2014 15:46:48 -0400

Hi All.

Firefox receives a PUSH_PROMISE  from node-http2 (speaking -14). That puts
Firefox into reserved-remote and node into reserved-local.

Firefox sends a WINDOW_UPDATE on that stream and node replies with GOAWAY
Protocol-Error

Section 5.1 of -14 has this to say:
*reserved (local):*
* [..]*

*A PRIORITY <http://http2.github.io/http2-spec/index.html#PRIORITY> frame
MAY be received in this state. Receiving any type of frame other than
RST_STREAM <http://http2.github.io/http2-spec/index.html#RST_STREAM> or
PRIORITY <http://http2.github.io/http2-spec/index.html#PRIORITY> on a
stream in this state MUST be treated as a connection error (Section 5.4.1
<http://http2.github.io/http2-spec/index.html#ConnectionErrorHandler>) of
type PROTOCOL_ERROR
<http://http2.github.io/http2-spec/index.html#PROTOCOL_ERROR>. *

point to node! However it also has this to say:

*reserved (remote): [..]*

*An endpoint MAY send a PRIORITY
<http://http2.github.io/http2-spec/index.html#PRIORITY> frame in this state
to reprioritize the reserved stream. An endpoint MUST NOT send any type of
frame other than RST_STREAM
<http://http2.github.io/http2-spec/index.html#RST_STREAM>, WINDOW_UPDATE
<http://http2.github.io/http2-spec/index.html#WINDOW_UPDATE>, or PRIORITY
<http://http2.github.io/http2-spec/index.html#PRIORITY> in this state. *

point to firefox! We're all winners here.

Which state should be changed?

-Patrick

---

From: Mike Bishop <[email-masked]>
Date: Thu, 23 Oct 2014 20:36:59 +0000

I’d say reserved (local) needs updating.  Once you know what the server is sending you, you’ll reasonably be able to give it window to keep sending.

From: Patrick McManus [mailto:[email-masked]]
Sent: Thursday, October 23, 2014 12:47 PM
To: HTTP Working Group
Subject: sending WINDOW_UPDATE when in reserved (remote)

Hi All.
Firefox receives a PUSH_PROMISE  from node-http2 (speaking -14). That puts Firefox into reserved-remote and node into reserved-local.
Firefox sends a WINDOW_UPDATE on that stream and node replies with GOAWAY Protocol-Error
Section 5.1 of -14 has this to say:
reserved (local): [..]

A PRIORITY<http://http2.github.io/http2-spec/index.html#PRIORITY> frame MAY be received in this state. Receiving any type of frame other than RST_STREAM<http://http2.github.io/http2-spec/index.html#RST_STREAM> or PRIORITY<http://http2.github.io/http2-spec/index.html#PRIORITY> on a stream in this state MUST be treated as a connection error (Section 5.4.1<http://http2.github.io/http2-spec/index.html#ConnectionErrorHandler>) of type PROTOCOL_ERROR<http://http2.github.io/http2-spec/index.html#PROTOCOL_ERROR>.

reserved (remote): [..]

An endpoint MAY send a PRIORITY<http://http2.github.io/http2-spec/index.html#PRIORITY> frame in this state to reprioritize the reserved stream. An endpoint MUST NOT send any type of frame other than RST_STREAM<http://http2.github.io/http2-spec/index.html#RST_STREAM>, WINDOW_UPDATE<http://http2.github.io/http2-spec/index.html#WINDOW_UPDATE>, or PRIORITY<http://http2.github.io/http2-spec/index.html#PRIORITY> in this state.

-Patrick

---

From: Ryan Hamilton <[email-masked]>
Date: Thu, 23 Oct 2014 13:38:57 -0700

It seems clear to me that sending a WINDOW_UPDATE in this situation is
a useful thing for a client to do. I suggest giving the point to
firefox, and changing the first text.

On Thu, Oct 23, 2014 at 12:46 PM, Patrick McManus <[email-masked]> wrote:
> A PRIORITY frame MAY be received in this state. Receiving any type of frame
> other than RST_STREAM or PRIORITY on a stream in this state MUST be treated
> as a connection error (Section 5.4.1) of type PROTOCOL_ERROR.
>
> An endpoint MAY send a PRIORITY frame in this state to reprioritize the
> reserved stream. An endpoint MUST NOT send any type of frame other than
> RST_STREAM, WINDOW_UPDATE, or PRIORITY in this state.
>

---

From: Mark Nottingham <[email-masked]>
Date: Fri, 24 Oct 2014 11:07:47 +1100

Thanks Patrick, created as <https://github.com/http2/http2-spec/issues/634>.

It sounds like so far, people agree we should update reserved (local). Anyone disagree?

Cheers,

> On 24 Oct 2014, at 6:46 am, Patrick McManus <[email-masked]> wrote:
> 
> Hi All. 
> 
> A PRIORITY frame MAY be received in this state. Receiving any type of frame other than RST_STREAM or PRIORITY on a stream in this state MUST be treated as a connection error (Section 5.4.1) of type PROTOCOL_ERROR.
> 
> An endpoint MAY send a PRIORITY frame in this state to reprioritize the reserved stream. An endpoint MUST NOT send any type of frame other than RST_STREAM, WINDOW_UPDATE, or PRIORITY in this state.
> 

--
Mark Nottingham   https://www.mnot.net/

---

From: Martin Thomson <[email-masked]>
Date: Thu, 23 Oct 2014 18:36:11 -0700

https://github.com/http2/http2-spec/pull/635

---

From: Mark Nottingham <[email-masked]>
Date: Mon, 27 Oct 2014 14:08:33 -0700

It seems like we have consensus here; marking as editor-ready.

> On 23 Oct 2014, at 6:36 pm, Martin Thomson <[email-masked]> wrote:
> 

--
Mark Nottingham   http://www.mnot.net/