]> git.kaiwu.me - haproxy.git/commit
BUG/MINOR: mux_quic: do not release conn on qcc_recv() for QMux
authorAmaury Denoyelle <adenoyelle@haproxy.com>
Thu, 23 Apr 2026 13:32:58 +0000 (15:32 +0200)
committerAmaury Denoyelle <adenoyelle@haproxy.com>
Fri, 24 Apr 2026 07:33:04 +0000 (09:33 +0200)
commitd7e3b826f2035f692aac1cb8659588f6b323ae83
tree4b126ab3682562063c089a43e702123cefd4d82e
parentc08dcd3519f75fd65a310cc55f97a3fc1b9c76c9
BUG/MINOR: mux_quic: do not release conn on qcc_recv() for QMux

Recently, an extra check has been added so that a dead connection is
immediately release on at the end of qcc_recv() operation. This is
useful when a GOAWAY frame is received from a server, so that the
backend connection is released if idle.

This step is in fact only necessary for QUIC, as qcc_recv() is called
directly from the lower transport layer. It causes issues with QMux as
in this case qcc_recv() is called via qcc_io_recv(). A crash in this
context will occur as qcc_recv() does not indicate that a release has
been performed.

To fix this, simply disable the extra check at the end of qcc_recv() for
QMux. This is fine as in this case receive operation is always followed
by qcc_io_process() which is able to release the connection in a safe
way.

No need to backport.
src/mux_quic.c