BUG/MEDIUM: connections: Set CO_FL_CONNECTED in conn_complete_session().

We can't just assume conn_create_mux() will be called, and set CO_FL_CONNECTED,
conn_complete_session() might be call synchronously if we're not using SSL,
so ew haee no choice but to set CO_FL_CONNECTED in there. This should fix
the recent breakage of the mcli reg tests.
This commit is contained in:
Olivier Houchard 2020-01-23 13:15:14 +01:00 committed by Olivier Houchard
parent dad239d08b
commit a8a415d31a
2 changed files with 8 additions and 4 deletions

View File

@ -43,16 +43,16 @@ struct mux_proto_list mux_proto_list = {
int conn_create_mux(struct connection *conn)
{
/* Verify if the connection just established. */
if (unlikely(!(conn->flags & (CO_FL_WAIT_L4_CONN | CO_FL_WAIT_L6_CONN | CO_FL_CONNECTED))))
conn->flags |= CO_FL_CONNECTED;
if (conn_is_back(conn)) {
struct server *srv;
struct conn_stream *cs = conn->ctx;
if (conn->flags & CO_FL_ERROR)
goto fail;
/* Verify if the connection just established. */
if (unlikely(!(conn->flags & (CO_FL_WAIT_L4_CONN | CO_FL_WAIT_L6_CONN | CO_FL_CONNECTED))))
conn->flags |= CO_FL_CONNECTED;
if (conn_install_mux_be(conn, conn->ctx, conn->owner) < 0)
goto fail;
srv = objt_server(conn->target);

View File

@ -433,6 +433,10 @@ int conn_complete_session(struct connection *conn)
if (conn->flags & CO_FL_ERROR)
goto fail;
/* Verify if the connection just established. */
if (unlikely(!(conn->flags & (CO_FL_WAIT_L4_CONN | CO_FL_WAIT_L6_CONN | CO_FL_CONNECTED))))
conn->flags |= CO_FL_CONNECTED;
/* if logs require transport layer information, note it on the connection */
if (sess->fe->to_log & LW_XPRT)
conn->flags |= CO_FL_XPRT_TRACKED;