From 11c3624c3211b51acbc2ec8282534022bbc6fd5a Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Sat, 4 Apr 2015 15:54:03 +0200 Subject: [PATCH] MINOR: session: implement session_free() and use it everywhere 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 | 1 + src/hlua.c | 2 +- src/peers.c | 2 +- src/session.c | 5 +++++ src/stream.c | 6 +++--- 5 files changed, 11 insertions(+), 5 deletions(-) diff --git a/include/proto/session.h b/include/proto/session.h index 79589d391..487f318ec 100644 --- a/include/proto/session.h +++ b/include/proto/session.h @@ -31,6 +31,7 @@ #include extern struct pool_head *pool2_session; +void session_free(struct session *sess); int init_session(); #endif /* _PROTO_SESSION_H */ diff --git a/src/hlua.c b/src/hlua.c index c09330b9c..7df8778eb 100644 --- a/src/hlua.c +++ b/src/hlua.c @@ -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; diff --git a/src/peers.c b/src/peers.c index 6a8771f71..df4ecf889 100644 --- a/src/peers.c +++ b/src/peers.c @@ -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; } diff --git a/src/session.c b/src/session.c index 116816fbd..e1e9f352d 100644 --- a/src/session.c +++ b/src/session.c @@ -20,6 +20,11 @@ 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() { diff --git a/src/stream.c b/src/stream.c index 1fba4513a..6730ad47d 100644 --- a/src/stream.c +++ b/src/stream.c @@ -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)) {