]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUG/MEDIUM: applet: Improve again spinning loops detection with the new API
authorChristopher Faulet <cfaulet@haproxy.com>
Thu, 16 Oct 2025 09:22:22 +0000 (11:22 +0200)
committerChristopher Faulet <cfaulet@haproxy.com>
Fri, 24 Oct 2025 07:26:10 +0000 (09:26 +0200)
A first attempt to fix this issue was already pushed (54b7539d6 "BUG/MEDIUM:
apppet: Improve spinning loop detection with the new API"). But it not was
fully accurrate. Indeed, we must check if something was received or sent by
the applet before incrementing the call rate. But we must also take care the
applet is allowed to receive or send data. That is what is performed in this
patch.

This patch must be backported as far as 3.0 with the patch above.

src/applet.c

index 4b55bf9b599a25f94c8d6de1076f029892f3574d..af4e3fe05d31a1d131ab36dad4abb6660c1093d9 100644 (file)
@@ -968,7 +968,7 @@ struct task *task_process_applet(struct task *t, void *context, unsigned int sta
        }
 
        /* measure the call rate and check for anomalies when too high */
-       if (!did_recv && !did_send) {
+       if ((!did_recv && sc_is_send_allowed(sc)) && (!did_send && sc_is_recv_allowed(sc))) {
                rate = update_freq_ctr(&app->call_rate, 1);
                if (rate >= 100000 && app->call_rate.prev_ctr) // looped like this more than 100k times over last second
                        stream_dump_and_crash(&app->obj_type, read_freq_ctr(&app->call_rate));