]> git.ipfire.org Git - thirdparty/haproxy.git/commit
MINOR: mux-quic: support full request channel buffer
authorAmaury Denoyelle <adenoyelle@haproxy.com>
Mon, 2 May 2022 09:07:06 +0000 (11:07 +0200)
committerAmaury Denoyelle <adenoyelle@haproxy.com>
Mon, 2 May 2022 09:19:02 +0000 (11:19 +0200)
commitf1fc0b393ba4d7df3665a330fa680fdefe3f5508
tree887371e47bd7633534bebc688864ee01e162365c
parent026fef98a014b9860f7058eae437ff0a11c78e20
MINOR: mux-quic: support full request channel buffer

If the request channel buffer is full, H3 demuxing must be interrupted
on the stream until some read is performed. This condition is reported
if the HTX stream buffer qcs.rx.app_buf is full.

In this case, qcs instance is marked with a new flag QC_SF_DEM_FULL.
This flag cause the H3 demuxing to be interrupted. It is cleared when
the HTX buffer is read by the conn-stream layer through rcv_buf
operation.

When the flag is cleared, the MUX tasklet is woken up. However, as MUX
iocb does not treat Rx for the moment, this is useless. It must be fix
to prevent possible freeze on POST transfers.

In practice, for the moment the HTX buffer is never full as the current
Rx code is limited by the quic-conn receive buffer size and the
incomplete flow-control implementation. So for now this patch is not
testable under the current conditions.
include/haproxy/mux_quic-t.h
src/h3.c
src/mux_quic.c