From cc0e617734165b31b2bb53403746c95daaf4296d Mon Sep 17 00:00:00 2001 From: Aurelien DARRAGON Date: Fri, 2 May 2025 19:06:44 +0200 Subject: [PATCH] BUG/MINOR: proxy: only use proxy_inc_fe_cum_sess_ver_ctr() with frontends proxy_inc_fe_cum_sess_ver_ctr() was implemented in 9969adbc ("MINOR: stats: add by HTTP version cumulated number of sessions and requests") As its name suggests, it is meant to be called for frontends, not backends Also, in 9969adbc, when used under h1_init(), a precaution is taken to ensure that the function is only called with frontends. However, this precaution was not applied in h2_init() and qc_init(). Due to this, it remains possible to have proxy_inc_fe_cum_sess_ver_ctr() being called with a backend proxy as parameter. While it did not cause known issues so far, it is not expected and could result in bugs in the future. Better fix this by ensuring the function is only called with frontends. It may be backported up to 2.8 (cherry picked from commit b39825ee45150415d7ed64b7ce785bb946f727bd) Signed-off-by: Willy Tarreau (cherry picked from commit 736bb497acb656e736291f8113650a62bcf96f5f) Signed-off-by: Christopher Faulet --- src/mux_h2.c | 2 +- src/mux_quic.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/mux_h2.c b/src/mux_h2.c index b3307e1..b98aed4 100644 --- a/src/mux_h2.c +++ b/src/mux_h2.c @@ -1154,7 +1154,7 @@ static int h2_init(struct connection *conn, struct proxy *prx, struct session *s goto fail_stream; } - if (sess) + if (sess && !conn_is_back(conn)) proxy_inc_fe_cum_sess_ver_ctr(sess->listener, prx, 2); /* Rhttp connections are only accounted after reverse completion. */ diff --git a/src/mux_quic.c b/src/mux_quic.c index 9290e79..8fe2fbc 100644 --- a/src/mux_quic.c +++ b/src/mux_quic.c @@ -2859,7 +2859,7 @@ static int qmux_init(struct connection *conn, struct proxy *prx, goto err; } - if (qcc->app_ops == &h3_ops) + if (qcc->app_ops == &h3_ops && !conn_is_back(conn)) proxy_inc_fe_cum_sess_ver_ctr(sess->listener, prx, 3); /* Register conn for idle front closing. This is done once everything is allocated. */ -- 1.7.10.4