diff --git a/include/haproxy/session.h b/include/haproxy/session.h index 205bd82ac..3b96f35a9 100644 --- a/include/haproxy/session.h +++ b/include/haproxy/session.h @@ -194,7 +194,8 @@ static inline struct connection *session_get_conn(struct session *sess, void *ta list_for_each_entry(srv_list, &sess->srv_list, srv_list) { if (srv_list->target == target) { list_for_each_entry(srv_conn, &srv_list->conn_list, session_list) { - if (srv_conn->mux && (srv_conn->mux->avail_streams(srv_conn) > 0)) { + if (srv_conn->mux && (srv_conn->mux->avail_streams(srv_conn) > 0) && + !(srv_conn->flags & CO_FL_WAIT_XPRT)) { if (srv_conn->flags & CO_FL_SESS_IDLE) { srv_conn->flags &= ~CO_FL_SESS_IDLE; sess->idle_conns--;