MINOR: mux-h1: Wake up H1C after its creation if input buffer is not empty
authorChristopher Faulet <cfaulet@haproxy.com>
Thu, 21 Jan 2021 16:45:45 +0000 (17:45 +0100)
committerChristopher Faulet <cfaulet@haproxy.com>
Thu, 28 Jan 2021 15:27:15 +0000 (16:27 +0100)
When a H1 connection is created, we now wakeup the H1C tasklet if there are
some data in the input buffer. If not we only subscribe for reads.

This patch is required to fix the TCP to H1 upgrades.

src/mux_h1.c

index 5681a24..69cc468 100644 (file)
@@ -812,7 +812,9 @@ static int h1_init(struct connection *conn, struct proxy *proxy, struct session
        }
 
        /* prepare to read something */
-       if (h1_recv_allowed(h1c))
+       if (b_data(&h1c->ibuf))
+               tasklet_wakeup(h1c->wait_event.tasklet);
+       else if (h1_recv_allowed(h1c))
                h1c->conn->xprt->subscribe(h1c->conn, h1c->conn->xprt_ctx, SUB_RETRY_RECV, &h1c->wait_event);
 
        /* mux->wake will be called soon to complete the operation */