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 @@ __LJMP static int hlua_socket_new(lua_State *L) 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)) {