Skip to content

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

@LPardue

Description

@LPardue

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    HTTP/3h3 or quic related

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions