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

Support HTTP/3 stream reset detection in quiche backend #8437

Closed
LPardue opened this issue Feb 11, 2022 · 0 comments
Closed

Support HTTP/3 stream reset detection in quiche backend #8437

LPardue opened this issue Feb 11, 2022 · 0 comments
Labels
HTTP/3

Comments

@LPardue
Copy link
Contributor

@LPardue LPardue commented Feb 11, 2022

I did this

Looked at the HTTP/3 polling code in quiche backend -

switch(quiche_h3_event_type(ev)) {

I expected the following

A case statement for QUICHE_H3_EVENT_RESET https://github.com/cloudflare/quiche/blob/6437b3c2db0dd3c1d6c76cb71d784c874b185d01/quiche/include/quiche.h#L670

curl/libcurl version

curl @ 96f85a0

operating system

n/a

Rational

The server can reset response streams at any time, These are similar to Finished events except that body data doesn't have to be read to completion before Reset is fired. Not checking for Resets could mean that the client mistakenly sees the stream alive, while the server sees it as terminated.

Furthermore, if curl implements support for cancelling the Request stream (see https://github.com/cloudflare/quiche/blob/6437b3c2db0dd3c1d6c76cb71d784c874b185d01/quiche/include/quiche.h#L329) that will cause a STOP_SENDING to be sent, which will trigger the server to Reset it's side of the stream.

@bagder bagder added the HTTP/3 label Feb 11, 2022
bagder added a commit that referenced this issue Feb 11, 2022
A stream reset now causes a CURLE_PARTIAL_FILE error. I'm not convinced
this is the right action nor the right error code.

Reported-by: Lucas Pardue
Fixes #8437
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
HTTP/3
Projects
None yet
Development

No branches or pull requests

2 participants