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

HTTP-31: Sending Reserved Frames prior to stream close #4228

Closed
gloinul opened this issue Oct 16, 2020 · 5 comments · Fixed by #4235
Closed

HTTP-31: Sending Reserved Frames prior to stream close #4228

gloinul opened this issue Oct 16, 2020 · 5 comments · Fixed by #4235
Labels
-http editorial An issue that does not affect the design of the protocol; does not require consensus. ietf-lc An issue that was raised during IETF Last Call.

Comments

@gloinul
Copy link
Contributor

gloinul commented Oct 16, 2020

Section 7.2.8: https://www.ietf.org/archive/id/draft-ietf-quic-http-31.html#name-reserved-frame-types

These frames have no semantics, and can be sent on any open stream when application-layer padding is desired.

So I am uncertain if it is acceptable to shoehorn in a reserved frame after a frame that is supposed to be the last and then result in a close of the frame? Based on what is written I would lean to the interpretation that it is allowed, as the frame sender has decided to not close the stream yet, and thus it is open.

If this is correct interpretation than it is up to the editor if they like to clarify more. Else something needs to be done.

@LPardue
Copy link
Member

LPardue commented Oct 16, 2020

The best example here is sending a reserved frame after a Request stream is opened by the client. Perhaps it is useful to call that out in section 4.1.

can be sent on any open stream is a bit loose. You can't send frames on qpack streams for instance, or as the first bytes on a push stream. Maybe we can rephrase it as, "Can be sent on any stream where frames are permitted to be sent"

@MikeBishop
Copy link
Contributor

There are no frames that close the stream, because stream closure is handled by the transport. SETTINGS is special in that it is required to be first, and is covered by this text:

Implementations MUST ignore unknown or unsupported values in all extensible protocol elements. Implementations MUST discard frames and unidirectional streams that have unknown or unsupported types. This means that any of these extension points can be safely used by extensions without prior arrangement or negotiation. However, where a known frame type is required to be in a specific location, such as the SETTINGS frame as the first frame of the control stream (see Section 6.2.1), an unknown frame type does not satisfy that requirement and SHOULD be treated as an error.

It would hypothetically apply to a future frame type which is required to come at the end of the stream as well, but we have no such frames at this time. (This text does impose specific ordering on DATA and HEADERS frames relative to each other, but says nothing about other frame types.)

@LPardue's point is well-taken, and I'll take that text.

@larseggert larseggert added -http ietf-lc An issue that was raised during IETF Last Call. labels Oct 17, 2020
@larseggert larseggert added this to Triage in Late Stage Processing via automation Oct 17, 2020
@larseggert
Copy link
Member

@gloinul does the PR address your issue?

@gloinul
Copy link
Contributor Author

gloinul commented Oct 19, 2020

Yes, I think this PR clarifies things a bit and are sufficient to resolve my issue.

@larseggert
Copy link
Member

Labeling this as "editorial" based on #4235

@larseggert larseggert added the editorial An issue that does not affect the design of the protocol; does not require consensus. label Oct 19, 2020
@project-bot project-bot bot moved this from Triage to Editorial Issues in Late Stage Processing Oct 19, 2020
Late Stage Processing automation moved this from Editorial Issues to Issue Handled Oct 19, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
-http editorial An issue that does not affect the design of the protocol; does not require consensus. ietf-lc An issue that was raised during IETF Last Call.
Projects
Late Stage Processing
  
Issue Handled
Development

Successfully merging a pull request may close this issue.

4 participants