]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUG/MEDIUM: h1: Don't consider we're connected if the handshake isn't done.
authorOlivier Houchard <ohouchard@haproxy.com>
Tue, 11 Jun 2019 14:37:24 +0000 (16:37 +0200)
committerOlivier Houchard <cognet@ci0.org>
Tue, 11 Jun 2019 14:41:36 +0000 (16:41 +0200)
In h1_process(), don't consider we're connected if we still have handshakes
pending. It used not to happen, because we would not be called if there
were any ongoing handshakes, but that changed now that the handshakes are
handled by a xprt, and not by conn_fd_handler() directly.

src/mux_h1.c

index ae9e8fd6fe4b8368702da0311e5aecaa642326aa..7fd07d35575eaa4137d4f55bbc9ce0bdffb3c9a2 100644 (file)
@@ -1936,7 +1936,8 @@ static int h1_process(struct h1c * h1c)
                return -1;
 
        if (h1c->flags & H1C_F_CS_WAIT_CONN) {
-               if (!(conn->flags & (CO_FL_CONNECTED|CO_FL_ERROR)))
+               if (!(conn->flags & (CO_FL_CONNECTED|CO_FL_ERROR)) ||
+                   (conn->flags & CO_FL_HANDSHAKE))
                        goto end;
                h1c->flags &= ~H1C_F_CS_WAIT_CONN;
                h1_wake_stream_for_send(h1s);