]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
MINOR: session: Take care to decrement idle_conns counter in session_unown_conn
authorChristopher Faulet <cfaulet@haproxy.com>
Thu, 2 Jul 2020 13:56:23 +0000 (15:56 +0200)
committerChristopher Faulet <cfaulet@haproxy.com>
Wed, 15 Jul 2020 12:08:14 +0000 (14:08 +0200)
So conn_free() only calls session_unown_conn() if necessary. The details are now
fully handled by session_unown_conn().

include/haproxy/connection.h
include/haproxy/session.h

index 8ccb31d38e7cfb1ad80502c696c1234a2a47a043..094e54cde1dd09d3507de050673d820192132c02 100644 (file)
@@ -463,10 +463,7 @@ static inline void conn_free(struct connection *conn)
 {
        /* Remove ourself from the session's connections list, if any. */
        if (!LIST_ISEMPTY(&conn->session_list)) {
-               struct session *sess = conn->owner;
-               if (conn->flags & CO_FL_SESS_IDLE)
-                       sess->idle_conns--;
-               session_unown_conn(sess, conn);
+               session_unown_conn(conn->owner, conn);
        }
 
        sockaddr_free(&conn->src);
index 5a46c4f5bbaac8c320962dcd7a94fb04bf57dac5..05c56f6024ed5425ac91ce7db6b1edc105ace998 100644 (file)
@@ -77,6 +77,9 @@ static inline void session_store_counters(struct session *sess)
 static inline void session_unown_conn(struct session *sess, struct connection *conn)
 {
        struct sess_srv_list *srv_list = NULL;
+
+       if (conn->flags & CO_FL_SESS_IDLE)
+               sess->idle_conns--;
        LIST_DEL(&conn->session_list);
        LIST_INIT(&conn->session_list);
        list_for_each_entry(srv_list, &sess->srv_list, srv_list) {