mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-08-05 14:47:07 +02:00
MINOR: session: strengthen idle conn limit check
Add a BUG_ON() on session_check_idle_conn() to ensure the connection is not already flagged as CO_FL_SESS_IDLE. This checks that this function is only called one time per connection transition from active to idle. This is necessary to ensure that session idle counter is only incremented one time per connection.
This commit is contained in:
parent
ec1ab8d171
commit
57e9425dbc
@ -237,16 +237,20 @@ static inline int session_check_idle_conn(struct session *sess, struct connectio
|
|||||||
if (!conn->owner)
|
if (!conn->owner)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
/* Ensure conn is not already accounted as idle to prevent sess idle count excess increment. */
|
||||||
|
BUG_ON(conn->flags & CO_FL_SESS_IDLE);
|
||||||
|
|
||||||
if (sess->idle_conns >= sess->fe->max_out_conns) {
|
if (sess->idle_conns >= sess->fe->max_out_conns) {
|
||||||
session_unown_conn(sess, conn);
|
session_unown_conn(sess, conn);
|
||||||
conn->owner = NULL;
|
conn->owner = NULL;
|
||||||
conn->flags &= ~CO_FL_SESS_IDLE;
|
|
||||||
conn->mux->destroy(conn->ctx);
|
conn->mux->destroy(conn->ctx);
|
||||||
return -1;
|
return -1;
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
conn->flags |= CO_FL_SESS_IDLE;
|
conn->flags |= CO_FL_SESS_IDLE;
|
||||||
sess->idle_conns++;
|
sess->idle_conns++;
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user