Re: Are HTTP/2 state changes atomic with respect to SETTINGS_MAX_CONCURRENT_STREAMS?

On Mon, 11 Feb 2019 at 10:21, Stefan Eissing
<stefan.eissing@greenbytes.de> wrote:
>
> However the question remains what Cory should implement here?

With thanks to Mike, my first question was answered: HEADERS +
END_STREAM is not atomic, so it causes two state transitions, and so a
HEADERS + END_STREAM frame after a PUSH_PROMISE can cause a violation
of SETTINGS_MAX_CONCURRENT_STREAMS. I'll some tests for this and
enforce it appropriately in my code.

As to the second question regarding unbounded PPs, I'll likely lift an
approach from Netty, which is to enforce an entirely separate limit
internally. If this limit is exceeded we'll simply RST_STREAM in
response to any pushed stream and never deliver frames to users. This
is safe enough to do, given the advisory nature of pushes anyway.

Received on Monday, 18 February 2019 11:35:19 UTC