]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUG/MEDIUM: connections: Only avoid creating a mux if we have one
authorOlivier Houchard <ohouchard@haproxy.com>
Thu, 2 Oct 2025 12:02:03 +0000 (14:02 +0200)
committerOlivier Houchard <cognet@ci0.org>
Fri, 3 Oct 2025 11:13:10 +0000 (13:13 +0200)
In connect_server(), only avoid creating a mux when we're reusing a
connection, if that connection already has one. We can reuse a
connection with no mux, if we made a first attempt at connecting to the
server and it failed before we could create the mux (or during the mux
creation). The connection will then be reused when trying again.
This fixes a bug where a stream could stall if the first connection
attempt failed before the mux creation. It is easy to reproduce by
creating random memory allocation failure with -dmFail.
This was introduced by commit 4aaf0bfbced22d706af08725f977dcce9845d340,
and thus does not need any backport as long as that commit is not
backported.

src/backend.c

index 135b2c4a0f9f51f903f5203e149eac734b07154d..69842e343601d607dbe4f223f4a117c27832e1bd 100644 (file)
@@ -1844,7 +1844,8 @@ int connect_server(struct stream *s)
                if (err == SF_ERR_NONE) {
                        srv_conn = sc_conn(s->scb);
                        reuse = 1;
-                       may_start_mux_now = 0;
+                       if (srv_conn && srv_conn->mux)
+                               may_start_mux_now = 0;
                }
        }