Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

GOAWAY with StreamID == 0 #1717

Closed
lnicco opened this issue Aug 30, 2018 · 1 comment
Closed

GOAWAY with StreamID == 0 #1717

lnicco opened this issue Aug 30, 2018 · 1 comment
Labels
-http design An issue that affects the design of the protocol; resolution requires consensus.

Comments

@lnicco
Copy link
Contributor

lnicco commented Aug 30, 2018

The current text says about the StreamID in the GOAWAY frame definition:

This identifier ... MAY be zero if no requests were processed.

With the latest transport changes, stream 0 is now a valid bidirectional stream, so GOAWAY(0) actually means that stream 0 is accepted/could be opened.
This opens up a case where an endpoint cannot know for sure whether the remote endpoint has accepted stream 0 or not.

If you agree this is an issue, I see two options to fix this:
one is to add a flag to the GOAWAY frame that identify this particular case;
another one is to sacrifice one stream and slightly change the GOAWAY semantics to say that StreamID is the id of the last client-initiated stream plus one, i.e. the endpoint agree that any stream with ID >= StreamID was not accepted.

@martinthomson martinthomson added design An issue that affects the design of the protocol; resolution requires consensus. -http labels Aug 30, 2018
@martinthomson
Copy link
Member

Good catch. I prefer the "this stream and all higher ones were not processed, guaranteed" interpretation. Flags are awful.

MikeBishop added a commit that referenced this issue Sep 10, 2018
* Connection closure section

* Re-add GOAWAY text

* Incorporate feedback

* Fix GOAWAY off-by-one (Fixes #1717)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
-http design An issue that affects the design of the protocol; resolution requires consensus.
Projects
None yet
Development

No branches or pull requests

2 participants