]> git.kaiwu.me - haproxy.git/commit
MINOR: xprt_qstrm/mux-quic: handle extra QMux frames after params
authorAmaury Denoyelle <adenoyelle@haproxy.com>
Fri, 10 Apr 2026 07:40:10 +0000 (09:40 +0200)
committerAmaury Denoyelle <adenoyelle@haproxy.com>
Fri, 10 Apr 2026 08:20:52 +0000 (10:20 +0200)
commitfb3b2687472a27c4b06dba3bf5533cfacf8c1df3
treec63d34287fdaba6048494af5920a5df5f1f324d4
parent890831f29245c9a1dacea4d17271c8dfb167c83c
MINOR: xprt_qstrm/mux-quic: handle extra QMux frames after params

Layer xprt_qstrm is responsible to read the initial QMux transport
parameters frame. However, it could receive more data if some other
frames follow it. This extra content can only be handled by the MUX
layer once initialized.

Theorically, it could have been implemented via MSG_PEEK. However, this
flag is currently ignored by SSL layer. Besides, it is tedious to
implement safely. A new approach has been prefered where the MUX layer
is responsible to retrieve remaining data via xprt_qstrm_rxbuf()
accessor function during its initialization.

Thus, qmux_init() now may retrieve the buffer from xprt_qstrm layer.
This is performed via b_xfer() which will result in a zero copy
transfer. If this happens, tasklet is immediately scheduled to start
demuxing.
include/haproxy/xprt_qstrm.h
src/mux_quic.c
src/xprt_qstrm.c