diff --git a/src/connection.c b/src/connection.c index 8754d6e00..7e35630f4 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 d80392d1d..85c7976fc 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;