From: Willy Tarreau Date: Fri, 19 Jan 2024 16:25:18 +0000 (+0100) Subject: MINOR: session: add the necessary functions to update the per-session glitches X-Git-Tag: v3.0-dev3~17 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=8581d62daf97d761ab07fffb96808958a1bbed13;p=thirdparty%2Fhaproxy.git MINOR: session: add the necessary functions to update the per-session glitches This provides a new function session_add_glitch_ctr() that will update the glitch counter and rate for the session, if tracked at all. --- diff --git a/include/haproxy/session.h b/include/haproxy/session.h index 38335e4a51..5b080893e9 100644 --- a/include/haproxy/session.h +++ b/include/haproxy/session.h @@ -39,6 +39,8 @@ void session_free(struct session *sess); int session_accept_fd(struct connection *cli_conn); int conn_complete_session(struct connection *conn); struct task *session_expire_embryonic(struct task *t, void *context, unsigned int state); +void __session_add_glitch_ctr(struct session *sess, uint inc); + /* Remove the refcount from the session to the tracked counters, and clear the * pointer to ensure this is only performed once. The caller is responsible for @@ -123,6 +125,14 @@ static inline void session_inc_http_fail_ctr(struct session *sess) stkctr_inc_http_fail_ctr(&sess->stkctr[i]); } +/* Add to the number of cumulated glitches in the tracked counters, and + * implicitly update the rate if also tracked. + */ +static inline void session_add_glitch_ctr(struct session *sess, uint inc) +{ + if (sess->stkctr && inc) + __session_add_glitch_ctr(sess, inc); +} /* Remove the connection from the session list, and destroy the srv_list if it's now empty */ static inline void session_unown_conn(struct session *sess, struct connection *conn) diff --git a/src/session.c b/src/session.c index ce9ccbfd7e..b85797a11b 100644 --- a/src/session.c +++ b/src/session.c @@ -520,6 +520,18 @@ int conn_complete_session(struct connection *conn) return -1; } +/* Add to the number of cumulated glitches in the tracked counters for + * session which is known for being tracked, and implicitly update the + * rate if also tracked. + */ +void __session_add_glitch_ctr(struct session *sess, uint inc) +{ + int i; + + for (i = 0; i < global.tune.nb_stk_ctr; i++) + stkctr_add_glitch_ctr(&sess->stkctr[i], inc); +} + /* * Local variables: * c-indent-level: 8