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: Server SHOULD send CANCEL_PUSH #4227

Closed
gloinul opened this issue Oct 16, 2020 · 2 comments · Fixed by #4234
Closed

HTTP-31: Server SHOULD send CANCEL_PUSH #4227

gloinul opened this issue Oct 16, 2020 · 2 comments · Fixed by #4234
Labels
-http ietf-lc An issue that was raised during IETF Last Call.

Comments

@gloinul
Copy link
Contributor

gloinul commented Oct 16, 2020

In Section 7.2.3: https://www.ietf.org/archive/id/draft-ietf-quic-http-31.html#name-cancel_push

A server SHOULD send a CANCEL_PUSH frame even if it has opened the corresponding stream.

Is the intention that this sentence should have this meaning?

"A server that has opened a stream for a PUSH and is unable to fulfill this promise SHOULD send a CANCEL_PUSH frame with the corresponding Push ID."

I think as currently formulated it is missing the criteria as well when this may occur.

Secondly the alternative is also not clear. I assume this is a SHOULD as the stream can be reset with an error code? Does that need to be added and which error will be used? Especially as the next paragraph only discusses that the client SHOULD abort reading. Can't the server terminate the stream from its side? If only the later is allowed, I think that should be made explicit but appears unnecessary.

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

LPardue commented Oct 16, 2020

To the second question, stating clearly that the server can abort the Push stream with H3_REQUEST_CANCELLED seems like a good improvement.

@MikeBishop
Copy link
Contributor

Looking at the larger paragraph, the point is that there are two possible states when a server decides not to fulfill a push:

a. No stream has been created; CANCEL_PUSH is sufficient.
b. A stream has been created.

  1. The server could simply reset the stream; this is valid, but risks the client processing the RESET before learning the Push ID, so it won't know which Push ID is no longer being fulfilled.
  2. Better if the server both resets the stream and sends a CANCEL_PUSH.

You're right that this could be reworded to emphasize that you always send CANCEL_PUSH if you're not fulfilling a promise, and also close the stream if you've opened one.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
-http 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