diff --git a/src/mux_h1.c b/src/mux_h1.c index 27b1cb674..c1eefe2b8 100644 --- a/src/mux_h1.c +++ b/src/mux_h1.c @@ -2491,7 +2491,11 @@ static void h1_detach(struct conn_stream *cs) h1_release(h1c); } else { - h1c->conn->xprt->subscribe(h1c->conn, h1c->conn->xprt_ctx, SUB_RETRY_RECV, &h1c->wait_event); + /* If we have a new request, process it immediately */ + if (unlikely(b_data(&h1c->conn))) + h1_process(h1c); + else + h1c->conn->xprt->subscribe(h1c->conn, h1c->conn->xprt_ctx, SUB_RETRY_RECV, &h1c->wait_event); if (h1c->task) { h1c->task->expire = TICK_ETERNITY; if (b_data(&h1c->obuf)) {