From a8a415d31aeaab1c6652b10f611dcfc2b4125c17 Mon Sep 17 00:00:00 2001 From: Olivier Houchard Date: Thu, 23 Jan 2020 13:15:14 +0100 Subject: [PATCH] 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. --- src/connection.c | 8 ++++---- src/session.c | 4 ++++ 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/connection.c b/src/connection.c index 8754d6e000..7e35630f47 100644 --- a/src/connection.c +++ b/src/connection.c @@ -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); diff --git a/src/session.c b/src/session.c index d80392d1d2..85c7976fc5 100644 --- a/src/session.c +++ b/src/session.c @@ -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;