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

Capitalize (or not) stream ID, push ID #4961

Merged
merged 4 commits into from Mar 9, 2022
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
26 changes: 13 additions & 13 deletions rfc9114.md
Expand Up @@ -1049,7 +1049,7 @@ Some requests or pushes might already be in transit:
Servers MAY reject individual requests on streams below the indicated ID if
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Missed "Push ID" -> "push ID" on line 1052.

these requests were not processed.

- If a server receives a GOAWAY frame after having promised pushes with a Push
- If a server receives a GOAWAY frame after having promised pushes with a push
ID greater than or equal to the identifier contained in the GOAWAY frame,
those pushes will not be accepted.

Expand Down Expand Up @@ -1458,9 +1458,9 @@ connection error of type H3_ID_ERROR.

If the client receives a CANCEL_PUSH frame, that frame might identify a push ID
that has not yet been mentioned by a PUSH_PROMISE frame due to reordering. If a
server receives a CANCEL_PUSH frame whose Push ID has not yet been mentioned by
a PUSH_PROMISE frame, this MUST be treated as a connection error of type
H3_ID_ERROR.
server receives a CANCEL_PUSH frame for a push ID that has not yet been
mentioned by a PUSH_PROMISE frame, this MUST be treated as a connection error of
type H3_ID_ERROR.


### SETTINGS {#frame-settings}
Expand Down Expand Up @@ -1623,26 +1623,26 @@ Encoded Field Section:
: QPACK-encoded request header fields for the promised response. See {{QPACK}}
for more details.

A server MUST NOT use a Push ID that is larger than the client has provided in a
A server MUST NOT use a push ID that is larger than the client has provided in a
MAX_PUSH_ID frame ({{frame-max-push-id}}). A client MUST treat receipt of a
PUSH_PROMISE frame that contains a larger Push ID than the client has advertised
PUSH_PROMISE frame that contains a larger push ID than the client has advertised
as a connection error of H3_ID_ERROR.

A server MAY use the same Push ID in multiple PUSH_PROMISE frames. If so, the
A server MAY use the same push ID in multiple PUSH_PROMISE frames. If so, the
decompressed request header sets MUST contain the same fields in the same order,
and both the name and the value in each field MUST be exact matches. Clients
SHOULD compare the request header sections for resources promised multiple
times. If a client receives a Push ID that has already been promised and detects
times. If a client receives a push ID that has already been promised and detects
a mismatch, it MUST respond with a connection error of type
H3_GENERAL_PROTOCOL_ERROR. If the decompressed field sections match exactly, the
client SHOULD associate the pushed content with each stream on which a
PUSH_PROMISE frame was received.

Allowing duplicate references to the same push ID is primarily to reduce
duplication caused by concurrent requests. A server SHOULD avoid reusing a Push
duplication caused by concurrent requests. A server SHOULD avoid reusing a push
ID over a long period. Clients are likely to consume server push responses and
not retain them for reuse over time. Clients that see a PUSH_PROMISE frame that
uses a Push ID that they have already consumed and discarded are forced to
uses a push ID that they have already consumed and discarded are forced to
ignore the promise.

If a PUSH_PROMISE frame is received on the control stream, the client MUST
Expand Down Expand Up @@ -2451,9 +2451,9 @@ subject to flow control.
Frame type definitions in HTTP/3 often use the QUIC variable-length integer
encoding. In particular, stream IDs use this encoding, which allows for a
larger range of possible values than the encoding used in HTTP/2. Some frames
in HTTP/3 use an identifier other than a stream ID (e.g., Push
IDs). Redefinition of the encoding of extension frame types might be necessary
if the encoding includes a stream ID.
in HTTP/3 use an identifier other than a stream ID (e.g., push IDs).
Redefinition of the encoding of extension frame types might be necessary if the
encoding includes a stream ID.

Because the Flags field is not present in generic HTTP/3 frames, those frames
that depend on the presence of flags need to allocate space for flags as part
Expand Down