From: Christopher Faulet Date: Tue, 20 Nov 2018 17:38:01 +0000 (+0100) Subject: MINOR: mux-h1: Subscribe to send in h1_snd_buf() when not all data have been sent X-Git-Tag: v1.9-dev9~78 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=f96c322664b02ea2772a310ebf4267ade4e54393;p=thirdparty%2Fhaproxy.git MINOR: mux-h1: Subscribe to send in h1_snd_buf() when not all data have been sent After a call to snd_buf, if some data remain in the channel's buffer, this means the system buffers are full or we are unable to fully consume an HTX block for any reason. In the last case, we need to wakeup the stream to process more data as soon as possible. We do it subscribing to send at the end of h1_snd_buf(). --- diff --git a/src/mux_h1.c b/src/mux_h1.c index 534e14d79b..6c104f309a 100644 --- a/src/mux_h1.c +++ b/src/mux_h1.c @@ -1807,6 +1807,12 @@ static size_t h1_snd_buf(struct conn_stream *cs, struct buffer *buf, size_t coun if (!b_data(buf)) ret = count; } + + if (count && ret != count) { + if (!(h1c->wait_event.wait_reason & SUB_CAN_SEND)) + cs->conn->xprt->subscribe(cs->conn, SUB_CAN_SEND, &h1c->wait_event); + } + return ret; }