From f96c322664b02ea2772a310ebf4267ade4e54393 Mon Sep 17 00:00:00 2001 From: Christopher Faulet Date: Tue, 20 Nov 2018 18:38:01 +0100 Subject: [PATCH] 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(). --- src/mux_h1.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/mux_h1.c b/src/mux_h1.c index 534e14d79..6c104f309 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; }