-
Notifications
You must be signed in to change notification settings - Fork 565
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
Clarify that PRIORITY does not close streams. #813
Conversation
draft-ietf-httpbis-http2bis.xml
Outdated
The first use of a new stream identifier in a <xref target="HEADERS" format="none">HEADERS</xref> | ||
or <xref target="PUSH_PROMISE" format="none">PUSH_PROMISE</xref> frame implicitly closes all streams in the "idle" | ||
state that might have been initiated by that peer with a lower-valued stream identifier. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I've a little trouble with the ambiguity regarding stream identifiers in PUSH_PROMISE. I'm not clear on this, but it might be better to say:
Each type of stream transitions out of the "idle" state for one reason:
- A client-initiated stream becomes "open" when a HEADERS frame is sent on the stream.
- A server-initiated stream becomes "reserved" when a PUSH_PROMISE (sent on a request stream) promises a response on the stream.
When a stream transitions out of the "idle" state, all streams in that direction with lower-numbered stream identifiers that are also "idle" are closed. That is, an endpoint can skip a stream identifier, with the effect being that the skipped stream is immediately closed.
Too large a change?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
No, I think that's a good change. I may try to call out the specific stream identifier in the PUSH_PROMISE frame payload that is relevant here.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hmm, I abandoned that change a bit because it didn't read well with the paragraph above, so I've tried something else. Let me know how you feel about it.
8b22905
to
93c6991
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Like it. Take the first, maybe take the second, and we can merge this one.
Co-authored-by: Martin Thomson <mt@lowentropy.net>
This is a first stab at #759. I've gone for a minimal change here, simply clarifying that only HEADERS and PUSH_PROMISE frames have the effect of implicitly closing streams.
While I was writing this I did have a question that may need to be raised on-list: do HEADERS and PUSH_PROMISE only implicitly close streams if they are accepted? That is, if a client sends a HEADERS frame that triggers a stream error, does that HEADERS frame still implicitly close all streams with a lower stream ID that are in the "idle" state? This may also be worth clarifying.