From 61749d7cb78766464b4caa1545cc70528451661c Mon Sep 17 00:00:00 2001 From: Christopher Faulet Date: Tue, 28 Nov 2023 22:24:45 +0100 Subject: [PATCH] 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. --- src/mux_quic.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/mux_quic.c b/src/mux_quic.c index c22668c..36e5671 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; -- 1.7.10.4