From: Christopher Faulet Date: Tue, 4 Jun 2019 20:09:36 +0000 (+0200) Subject: BUG/MINOR: mux-h1: Don't send more data than expected X-Git-Tag: v2.0-dev6~31 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c31872fc04730696e9c686e8a6a50933344a8c10;p=thirdparty%2Fhaproxy.git BUG/MINOR: mux-h1: Don't send more data than expected In h1_snd_buf(), we try to consume as much data as possible in a loop. In this loop, we first format the raw HTTP message from the HTX message, then we try to send it. But we must be carefull to never send more data than specified by the stream-interface. This patch must be backported to 1.9. --- diff --git a/src/mux_h1.c b/src/mux_h1.c index 47a4071de0..c9c8f84caf 100644 --- a/src/mux_h1.c +++ b/src/mux_h1.c @@ -2347,7 +2347,7 @@ static size_t h1_snd_buf(struct conn_stream *cs, struct buffer *buf, size_t coun if (h1c->flags & H1C_F_CS_WAIT_CONN) return 0; - while (total != count) { + while (count) { size_t ret = 0; if (!(h1c->flags & (H1C_F_OUT_FULL|H1C_F_OUT_ALLOC))) @@ -2355,6 +2355,7 @@ static size_t h1_snd_buf(struct conn_stream *cs, struct buffer *buf, size_t coun if (!ret) break; total += ret; + count -= ret; if (!h1_send(h1c)) break; }