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

Servers should always send CANCEL_PUSH #3700

Merged
merged 4 commits into from Jun 8, 2020
Merged
Changes from all commits
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
15 changes: 8 additions & 7 deletions draft-ietf-quic-http.md
Expand Up @@ -1286,15 +1286,16 @@ stream. If the push stream has already ended, the server MAY still abruptly
terminate the stream or MAY take no action.

When a server sends CANCEL_PUSH, it is indicating that it will not be fulfilling
a promise and has not created a push stream. The client should not expect the
corresponding promise to be fulfilled.
a promise. The client cannot expect the corresponding promise to be fulfilled,
unless it has already received and processed the promised response. A server
SHOULD send a CANCEL_PUSH even if it has opened the corresponding stream.

Sending CANCEL_PUSH has no direct effect on the state of existing push streams.
A server SHOULD NOT send a CANCEL_PUSH when it has already created a
corresponding push stream, and a client SHOULD NOT send a CANCEL_PUSH when it
has already received a corresponding push stream. If a push stream arrives
after a client has sent CANCEL_PUSH, this MAY be treated as a stream error of
type H3_STREAM_CREATION_ERROR.
A client SHOULD NOT send a CANCEL_PUSH when it has already received a
corresponding push stream. A push stream could arrive after a client has sent
CANCEL_PUSH, because a server might not have processed the CANCEL_PUSH. The
client SHOULD abort reading the stream with an error code of
H3_REQUEST_CANCELLED.

A CANCEL_PUSH frame is sent on the control stream. Receiving a CANCEL_PUSH
frame on a stream other than the control stream MUST be treated as a connection
Expand Down