]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUG/MINOR: mux-h1: Be sure to swap H1C to splice mode when rcv_pipe() is called
authorChristopher Faulet <cfaulet@haproxy.com>
Mon, 26 Jul 2021 08:49:39 +0000 (10:49 +0200)
committerChristopher Faulet <cfaulet@haproxy.com>
Mon, 26 Jul 2021 13:14:35 +0000 (15:14 +0200)
The splicing does not work anymore because the H1 connection is not swap to
splice mode when rcv_pipe() callback function is called. It is important to
set H1C_F_WANT_SPLICE flag to inhibit data receipt via the buffer
API. Otherwise, because there are always data in the buffer, it is not
possible to use the kernel splicing.

This bug was introduced by the commit 2b861bf72 ("MINOR: mux-h1: clean up
conditions to enabled and disabled splicing").

The patch must be backported to 2.4.

src/mux_h1.c

index bed2e03fab34be259db8a2c067c433df47a389e2..29ac930b06a50f7376c38b43c39652e95b93bd16 100644 (file)
@@ -3432,6 +3432,7 @@ static int h1_rcv_pipe(struct conn_stream *cs, struct pipe *pipe, unsigned int c
                goto end;
        }
 
+       h1c->flags |= H1C_F_WANT_SPLICE;
        if (h1s_data_pending(h1s)) {
                TRACE_STATE("flush input buffer before splicing", H1_EV_STRM_RECV, cs->conn, h1s);
                goto end;