]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUG/MEDIUM: mux-h1: Remove H1C_F_WAIT_NEXT_REQ flag on a next request
authorChristopher Faulet <cfaulet@haproxy.com>
Wed, 23 Nov 2022 14:58:59 +0000 (15:58 +0100)
committerChristopher Faulet <cfaulet@haproxy.com>
Wed, 23 Nov 2022 14:59:00 +0000 (15:59 +0100)
When an idle H1 connection starts to process an new request, we must take
care to remove H1C_F_WAIT_NEXT_REQ flag. This flag is used to know an idle
H1 connection has already processed at least one request and is waiting for
a next one, but nothing was received yet.

Keeping this flag leads to a crash because some running H1 connections may
be erroneously released on a soft-stop. Indeed, only idle or closed
connections must be released.

This bug was reported into #1903. It is 2.7-specific. No backport needed.

src/mux_h1.c

index b730364ac5fddada8a80be9a0b7dfa24825405b9..15abff3d7d1a7ce4f3f89fbd85a4a1efb025f5cc 100644 (file)
@@ -750,7 +750,7 @@ static struct h1s *h1s_new(struct h1c *h1c)
        if (h1c->flags & H1C_F_WAIT_NEXT_REQ)
                h1s->flags |= H1S_F_NOT_FIRST;
        h1s->h1c->state = H1_CS_EMBRYONIC;
-
+       h1s->h1c->flags &= ~H1C_F_WAIT_NEXT_REQ;
        TRACE_LEAVE(H1_EV_H1S_NEW, h1c->conn, h1s);
        return h1s;