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

Clarify that PRIORITY does not close streams. #813

Merged
merged 2 commits into from
Feb 5, 2021

Conversation

Lukasa
Copy link
Collaborator

@Lukasa Lukasa commented Feb 3, 2021

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.

Comment on lines 1035 to 1037
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.
Copy link
Collaborator

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?

Copy link
Collaborator Author

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.

Copy link
Collaborator Author

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.

Copy link
Collaborator

@martinthomson martinthomson left a 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.

draft-ietf-httpbis-http2bis.xml Outdated Show resolved Hide resolved
draft-ietf-httpbis-http2bis.xml Outdated Show resolved Hide resolved
Co-authored-by: Martin Thomson <mt@lowentropy.net>
@martinthomson martinthomson merged commit 1cecb59 into httpwg:main Feb 5, 2021
@Lukasa Lukasa mentioned this pull request Feb 8, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants