From: Christopher Faulet Date: Tue, 28 Nov 2023 21:24:45 +0000 (+0100) Subject: BUG/MEDIUM: mux-quic: Stop zero-copy FF during nego if input is not empty X-Git-Tag: v2.9-dev12~36 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=61749d7cb78766464b4caa1545cc70528451661c;p=thirdparty%2Fhaproxy.git BUG/MEDIUM: mux-quic: Stop zero-copy FF during nego if input is not empty When the producer negociate with the QUIC mux to perform a zero-copy fast-forward, data in the input buffer are first transferred in the H3 buffer. However, after the transfer, if the input buffer is not empty, the data fast-forwarding must be stopped. In this case, qmux_nego_ff() must return 0. No backport needed. --- diff --git a/src/mux_quic.c b/src/mux_quic.c index c22668c834..36e5671a1e 100644 --- a/src/mux_quic.c +++ b/src/mux_quic.c @@ -2843,8 +2843,10 @@ static size_t qmux_nego_ff(struct stconn *sc, struct buffer *input, size_t count b_sub(qcs->sd->iobuf.buf, qcs->sd->iobuf.offset); /* Cannot forward more data, wait for room */ - if (b_data(input)) + if (b_data(input)) { + ret = 0; goto end; + } } ret -= qcs->sd->iobuf.data;