MINOR: session: release the listener with the session, not the stream

Since multiple streams can share one session attached to one listener,
the listener_release() call must be done in session_free() and not in
stream_free(), otherwise we end up with a negative count in H2.
diff --git a/src/session.c b/src/session.c
index 6c7399d..cbc8a5e 100644
--- a/src/session.c
+++ b/src/session.c
@@ -65,6 +65,8 @@
 void session_free(struct session *sess)
 {
 	HA_ATOMIC_SUB(&sess->fe->feconn, 1);
+	if (sess->listener)
+		listener_release(sess->listener);
 	session_store_counters(sess);
 	vars_prune_per_sess(&sess->vars);
 	pool_free2(pool2_session, sess);
@@ -361,8 +363,6 @@
 	conn_full_close(conn);
 	conn_free(conn);
 
-	listener_release(sess->listener);
-
 	task_delete(task);
 	task_free(task);
 	session_free(sess);