From c31872fc04730696e9c686e8a6a50933344a8c10 Mon Sep 17 00:00:00 2001 From: Christopher Faulet Date: Tue, 4 Jun 2019 22:09:36 +0200 Subject: [PATCH] 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. --- src/mux_h1.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/mux_h1.c b/src/mux_h1.c index 47a4071de..c9c8f84ca 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; }