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().
This commit is contained in:
Christopher Faulet 2018-11-20 18:38:01 +01:00 committed by Willy Tarreau
parent 1727648e10
commit f96c322664

View File

@ -1807,6 +1807,12 @@ static size_t h1_snd_buf(struct conn_stream *cs, struct buffer *buf, size_t coun
if (!b_data(buf)) if (!b_data(buf))
ret = count; 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; return ret;
} }