MEDIUM: sessions: Don't keep an infinite number of idling connections.
In session, don't keep an infinite number of connection that can idle.
Add a new frontend parameter, "max-session-srv-conns" to set a max number,
with a default value of 5.
diff --git a/src/backend.c b/src/backend.c
index c79302d..210cc31 100644
--- a/src/backend.c
+++ b/src/backend.c
@@ -1254,8 +1254,9 @@
(srv_conn->mux->avail_streams(srv_conn) == 1)) {
LIST_DEL(&old_conn->session_list);
LIST_INIT(&old_conn->session_list);
- session_add_conn(sess, old_conn, s->target);
old_conn->owner = sess;
+ session_add_conn(sess, old_conn, s->target);
+ session_check_idle_conn(sess, old_conn);
}
}
@@ -1283,6 +1284,7 @@
if (srv_conn && old_conn != srv_conn) {
srv_conn->owner = s->sess;
LIST_DEL(&srv_conn->session_list);
+ LIST_INIT(&srv_conn->session_list);
session_add_conn(s->sess, srv_conn, s->target);
}