]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
MINOR: session: implement session_free() and use it everywhere
authorWilly Tarreau <w@1wt.eu>
Sat, 4 Apr 2015 13:54:03 +0000 (15:54 +0200)
committerWilly Tarreau <w@1wt.eu>
Mon, 6 Apr 2015 09:37:30 +0000 (11:37 +0200)
We want to call this one everywhere we have to kill a session so
that future parts we move to the session can be released from there.

include/proto/session.h
src/hlua.c
src/peers.c
src/session.c
src/stream.c

index 79589d3915d508ecb1f3ae2d981bfc1bbc8018a4..487f318ecd235876a919cbc05441e68e87c38039 100644 (file)
@@ -31,6 +31,7 @@
 #include <types/session.h>
 
 extern struct pool_head *pool2_session;
+void session_free(struct session *sess);
 int init_session();
 
 #endif /* _PROTO_SESSION_H */
index c09330b9c77d4df5eaf5121b65fb6df281c74e80..7df8778eb76f202f4193a51278a44eef0b7d74ab 100644 (file)
@@ -2237,7 +2237,7 @@ out_fail_req_buf:
 out_fail_task:
        pool_free2(pool2_stream, socket->s);
 out_fail_stream:
-       pool_free2(pool2_session, sess);
+       session_free(sess);
 out_fail_conf:
        WILL_LJMP(lua_error(L));
        return 0;
index 6a8771f71868471429a2f4648c706480572436c8..df4ecf88930b079ec21653f63b6f391aaf8f108b 100644 (file)
@@ -1278,7 +1278,7 @@ static struct stream *peer_session_create(struct peer *peer, struct peer_session
        LIST_DEL(&s->list);
        pool_free2(pool2_stream, s);
  out_free_sess:
-       pool_free2(pool2_session, sess);
+       session_free(sess);
  out_close:
        return s;
 }
index 116816fbddadb39f98cf0bd8fd7e5e3e680730fb..e1e9f352daccc6aa81bf392e134c21ed0ec99c89 100644 (file)
 
 struct pool_head *pool2_session;
 
+void session_free(struct session *sess)
+{
+       pool_free2(pool2_session, sess);
+}
+
 /* perform minimal intializations, report 0 in case of error, 1 if OK. */
 int init_session()
 {
index 1fba4513a78529780dd6561e0cf2b1f96895f336..6730ad47de9619d31b9a3e6338fe9e8773f92c8c 100644 (file)
@@ -240,7 +240,7 @@ int stream_accept(struct listener *l, int cfd, struct sockaddr_storage *addr)
        stream_store_counters(s);
        pool_free2(pool2_stream, s);
  out_free_sess:
-       pool_free2(pool2_session, sess);
+       session_free(sess);
  out_free_conn:
        cli_conn->flags &= ~CO_FL_XPRT_TRACKED;
        conn_xprt_close(cli_conn);
@@ -359,8 +359,8 @@ static void kill_mini_session(struct stream *s)
        /* FIXME: for now we have a 1:1 relation between stream and session so
         * the stream must free the session.
         */
-       pool_free2(pool2_session, sess);
        pool_free2(pool2_stream, s);
+       session_free(sess);
 }
 
 /* Finish initializing a stream from a connection, or kills it if the
@@ -651,8 +651,8 @@ static void stream_free(struct stream *s)
        /* FIXME: for now we have a 1:1 relation between stream and session so
         * the stream must free the session.
         */
-       pool_free2(pool2_session, s->sess);
        pool_free2(pool2_stream, s);
+       session_free(sess);
 
        /* We may want to free the maximum amount of pools if the proxy is stopping */
        if (fe && unlikely(fe->state == PR_STSTOPPED)) {