From: Christopher Faulet Date: Mon, 5 Oct 2020 15:14:28 +0000 (+0200) Subject: MINOR: mux-h1: Process next request for IDLE connection only X-Git-Tag: v2.4-dev3~71 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=5d3c93cd43ce826efba3afb9456d2bd64789b2cf;p=thirdparty%2Fhaproxy.git MINOR: mux-h1: Process next request for IDLE connection only When the conn-stream is detached for a H1 connection, there is no reason to subscribe for reads or process pending input data if the connection is not idle. Because, it means a shutdown is pending. --- diff --git a/src/mux_h1.c b/src/mux_h1.c index 50d148bb74..4a518accb5 100644 --- a/src/mux_h1.c +++ b/src/mux_h1.c @@ -2538,11 +2538,15 @@ static void h1_detach(struct conn_stream *cs) h1_release(h1c); } else { - /* If we have a new request, process it immediately */ - if (unlikely(b_data(&h1c->ibuf))) - h1_process(h1c); - else - h1c->conn->xprt->subscribe(h1c->conn, h1c->conn->xprt_ctx, SUB_RETRY_RECV, &h1c->wait_event); + if (h1c->flags & H1C_F_CS_IDLE) { + /* If we have a new request, process it immediately or + * subscribe for reads waiting for new data + */ + if (unlikely(b_data(&h1c->ibuf))) + h1_process(h1c); + else + h1c->conn->xprt->subscribe(h1c->conn, h1c->conn->xprt_ctx, SUB_RETRY_RECV, &h1c->wait_event); + } h1_refresh_timeout(h1c); } end: