mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2026-04-11 22:11:00 +02:00
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.