]> git.ipfire.org Git - thirdparty/haproxy.git/commit
MEDIUM: h3: enforce GOAWAY by resetting higher unhandled stream
authorAmaury Denoyelle <adenoyelle@haproxy.com>
Tue, 24 Jan 2023 16:42:21 +0000 (17:42 +0100)
committerAmaury Denoyelle <adenoyelle@haproxy.com>
Mon, 20 Feb 2023 10:18:25 +0000 (11:18 +0100)
commit3d550848beb694b566aad05f6d7c549cf35d9f00
treea80eaf9ace5f13e7a616d30509fe7fa0227b2bf4
parent35d9053b6832c419f9a94ff331b5c495df1cde9d
MEDIUM: h3: enforce GOAWAY by resetting higher unhandled stream

When a GOAWAY has been emitted, an ID is announced to represent handled
streams. H3 RFC suggests that higher streams should be resetted with the
error code H3_REQUEST_CANCELLED. This allows the peer to replay requests
on another connection.

For the moment, the impact of this change is limitted as GOAWAY is only
used on connection shutdown just before the MUX is freed. However, for
soft-stop support, a GOAWAY can be emitted in anticipation while keeping
the MUX to finish the active streams. In this case, new streams opened
by the client are resetted.

As a consequence of this change, app_ops.attach() operation has been
delayed at the very end of qcs_new(). This ensure that all qcs members
are initialized to support RESET_STREAM sending.

This should be backported up to 2.7.
src/h3.c
src/mux_quic.c