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
Define initial PRIORITY frame and remove exclusive dependencies #2075
Changes from 1 commit
4fb06f0
9ec6b29
1b22092
1920b13
0141a42
9acfcf6
c66e724
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -472,10 +472,11 @@ The PRIORITY (type=0x02) frame specifies the client-advised priority of a | |
stream. | ||
|
||
When opening a new request stream, a PRIORITY frame MAY be sent as the first | ||
frame of the stream. In order to ensure that prioritization is processed in a | ||
consistent order, any subsequent PRIORITY frames MUST be sent on the control | ||
stream. A PRIORITY frame received after other frames on a request stream MUST | ||
be treated as a stream error of type HTTP_UNEXPECTED_FRAME. | ||
frame of the stream creating a dependency on an existing element. In order to | ||
ensure that prioritization is processed in a consistent order, any subsequent | ||
PRIORITY frames MUST be sent on the control stream. A PRIORITY frame received | ||
after other frames on a request stream MUST be treated as a stream error of type | ||
HTTP_UNEXPECTED_FRAME. | ||
|
||
Subsequent PRIORITY frames sent on the control stream might arrive before | ||
PRIORITY frames sent on a request stream due to reordering. PRIORITY frames on | ||
|
@@ -552,10 +553,11 @@ the interpretation of the associated Element ID fields. | |
Note that the root of the tree cannot be referenced using a Stream ID of 0, as | ||
in {{!RFC7540}}; QUIC stream 0 carries a valid HTTP request. The root of the | ||
tree cannot be reprioritized. A PRIORITY frame sent on a request stream that | ||
prioritizes any other stream MUST be treated as a stream error of type | ||
HTTP_MALFORMED_FRAME. Likewise, a PRIORITY frame sent on a control stream that | ||
prioritizes the current stream MUST be treated as a connection error of type | ||
HTTP_MALFORMED_FRAME. | ||
prioritizes any other stream or expresses a dependency on a request with a | ||
greater Stream ID than the current stream MUST be treated as a stream error of | ||
type HTTP_MALFORMED_FRAME. Likewise, a PRIORITY frame sent on a control stream | ||
that prioritizes the current stream MUST be treated as a connection error of | ||
type HTTP_MALFORMED_FRAME. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I am not sure what the intent of the last sentence is. My understanding is that a PRIORITY frame can only refer to a "Stream ID of a request stream" (assuming that the type bits are There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This is the inverse of the above -- sending |
||
|
||
When a PRIORITY frame claims to reference a request, the associated ID MUST | ||
identify a client-initiated bidirectional stream. A server MUST treat receipt | ||
|
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 am not sure if we need "prioritizes any other stream or".
Now that exclusive flag is going away, is there any case that could hit this condition?
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.
This is a perhaps-unclear reference to a PRIORITY frame where
Prioritized Element Type
is not11
(i.e. the thing being prioritized is anything other than "this stream").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.
Ah. Thank you for the clarification. I missed that.
My preference goes to stating that
Prioritized Element Type
MUST be11
when the frame is sent on a request stream and that it MUST NOT be11
when the frame is sent on a control stream.This is because I prefer to avoid having multiple representation that means the same; under the current provision, it seems that PEID could be encoded in two ways for a PRIORITY frame sent on a request stream; either set Prioritized Element Type to
11
or set it to00
and set Prioritized Element ID to the ID of the stream. I fear that we might see interoperability issues in the wild if most of the clients use the11
form but some used the00
form.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.
Good point. The requirement for the values was already there (in the definition of Prioritized Element Type), but I'll scope the required-error language to the specific values as well.