]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUG/MINOR: http-ana: Don't increment conn_retries counter before the L7 retry
authorChristopher Faulet <cfaulet@haproxy.com>
Wed, 1 Mar 2023 14:45:39 +0000 (15:45 +0100)
committerChristopher Faulet <cfaulet@haproxy.com>
Wed, 1 Mar 2023 16:35:16 +0000 (17:35 +0100)
When we are about to perform a L7 retry, we deal with the conn_retries
counter, to be sure we can retry. However, there is an issue here because
the counter is incremented before it is checked against the backend
limit. So, we can miss a connection retry.

Of course, we must invert both operation. The conn_retries counter must be
incremented after the check agains the backend limit.

This patch must be backported as far as 2.6.

src/http_ana.c

index 80263e61a339d4fd3a375c3b03a7e0f958d0c1cf..3aebd427274516a8249b8ca69452639a60de3cb6 100644 (file)
@@ -1118,10 +1118,9 @@ static __inline int do_l7_retry(struct stream *s, struct stconn *sc)
        struct channel *req, *res;
        int co_data;
 
-       s->conn_retries++;
        if (s->conn_retries >= s->be->conn_retries)
                return -1;
-
+       s->conn_retries++;
        if (objt_server(s->target)) {
                if (s->flags & SF_CURR_SESS) {
                        s->flags &= ~SF_CURR_SESS;