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.
diff --git a/include/proto/session.h b/include/proto/session.h
index 79589d3..487f318 100644
--- a/include/proto/session.h
+++ b/include/proto/session.h
@@ -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 */
diff --git a/src/hlua.c b/src/hlua.c
index c09330b..7df8778 100644
--- a/src/hlua.c
+++ b/src/hlua.c
@@ -2237,7 +2237,7 @@
 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 6a8771f..df4ecf8 100644
--- a/src/peers.c
+++ b/src/peers.c
@@ -1278,7 +1278,7 @@
 	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 116816f..e1e9f35 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 1fba451..6730ad4 100644
--- a/src/stream.c
+++ b/src/stream.c
@@ -240,7 +240,7 @@
 	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 @@
 	/* 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 @@
 	/* 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)) {