BUG/MEDIUM: h1: Don't consider we're connected if the handshake isn't done.

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.
This commit is contained in:
Olivier Houchard 2019-06-11 16:37:24 +02:00 committed by Olivier Houchard
parent 92d093d641
commit 690e0f07f5

View File

@ -1936,7 +1936,8 @@ static int h1_process(struct h1c * h1c)
return -1; return -1;
if (h1c->flags & H1C_F_CS_WAIT_CONN) { 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; goto end;
h1c->flags &= ~H1C_F_CS_WAIT_CONN; h1c->flags &= ~H1C_F_CS_WAIT_CONN;
h1_wake_stream_for_send(h1s); h1_wake_stream_for_send(h1s);