]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUG/MINOR: check: Reinit the buffer wait list at the end of a check
authorChristopher Faulet <cfaulet@haproxy.com>
Wed, 18 May 2022 12:24:43 +0000 (14:24 +0200)
committerChristopher Faulet <cfaulet@haproxy.com>
Thu, 19 May 2022 08:12:38 +0000 (10:12 +0200)
The buffer wait list is used to deal with buffer allocation failure. But at
the end of health-check, it must be reinitialized. There is no reason to
reason to get a buffer between two health-check runs. And in fact, the
associated flags, CHK_ST_IN_ALLOC and CHK_ST_OUT_ALLOC, are already cleared
at the end of a health-check.

This patch must be backported as far as 2.2. On the 2.2, MT_LIST_ADDED and
MT_LIST_DEL must be used instead of LIST_INLIST and LIST_DEL_INIT.

src/check.c

index d65850da95e8a3139d0cb3cab548221e8736eb9c..2da39af4d485dc2dc80f91d83d56974b5201aeac 100644 (file)
@@ -1232,6 +1232,10 @@ struct task *process_chk_conn(struct task *t, void *context, unsigned int state)
                        check_notify_success(check);
                }
        }
+
+        if (LIST_INLIST(&check->buf_wait.list))
+                LIST_DEL_INIT(&check->buf_wait.list);
+
        task_set_affinity(t, MAX_THREADS_MASK);
        check_release_buf(check, &check->bi);
        check_release_buf(check, &check->bo);