]> git.kaiwu.me - haproxy.git/commit
MINOR: h3: simplify GOAWAY local emission
authorAmaury Denoyelle <adenoyelle@haproxy.com>
Thu, 16 Apr 2026 16:21:40 +0000 (18:21 +0200)
committerAmaury Denoyelle <adenoyelle@haproxy.com>
Fri, 17 Apr 2026 09:36:01 +0000 (11:36 +0200)
commit5c8c9fc528df479e0157c433e82d6373474f735e
treea6c24ce482942318a72305a6f25a0782c1bf0736
parent143d0034c912f1490812b6302f0dffb37f3ec02d
MINOR: h3: simplify GOAWAY local emission

Rework GOAWAY emission handling at the HTTP/3 layer. Previously, h3c
member <id_goaway> were updated during the connection on each new
streams attach. This ID was finally reused when a GOAWAY was emitted.

However, this is unnecessary to keep an updated ID during the connection
lifetime. Indeed, <largest_bidi_r> QCC member can be used for the same
purpose. Note that this is only useful for the frontend side. For a
client connection, GOAWAY contains a PUSH ID, thus 0 can be used for
now.

Thus, <id_goaway> in h3c is renamed <id_shut_l>. Now it is only sent
when the GOAWAY is emitted. This allows to reject any streams with a
greater ID. This approach is considered simpler.

Note that <largest_bidi_r> is not strictly similar to the obsolete
<id_goaway>. Indeed, if an error occurs before the corresponding stream
layer allocation, the former would still be incremented. However,
this is not a real issue as GOAWAY specification is clear that lower IDs
are not guaranteed to being handled well, until either the stream is
closed or resetted, or the whole connection is teared down.
src/h3.c