]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUG/MEDIUM: applet: Fix test on shut flags for legacy applets (v2)
authorChristopher Faulet <cfaulet@haproxy.com>
Mon, 16 Feb 2026 18:14:57 +0000 (19:14 +0100)
committerChristopher Faulet <cfaulet@haproxy.com>
Wed, 18 Feb 2026 08:44:15 +0000 (09:44 +0100)
The previous fix was wrong. When shut flags are tested for legacy applets,
to know if the I/O handler can be called or not, we must be sure shut for
reads and for writes are both set to skip the applet I/O handler.

This bug introduced regression, at least for the peer applet and for the DNS
applet.

This patch must be backported with abc1947e1 ("BUG/MEDIUM: applet: Fix test
on shut flags for legacy applets"), so as far as 3.0.

src/applet.c

index 51ed0f9d8a5300ee2716a7c6f01563370ff8ade7..0e4ecf69d5dd4ae4fdb5118e989ce8257efe5afc 100644 (file)
@@ -852,7 +852,7 @@ struct task *task_run_applet(struct task *t, void *context, unsigned int state)
        /* Don't call I/O handler if the applet was shut (release callback was
         * already called)
         */
-       if (!se_fl_test(app->sedesc, SE_FL_SHR | SE_FL_SHW))
+       if (!se_fl_test(app->sedesc, SE_FL_SHR) || !se_fl_test(app->sedesc, SE_FL_SHW))
                app->applet->fct(app);
 
        TRACE_POINT(APPLET_EV_PROCESS, app);