From: Christopher Faulet Date: Wed, 6 Sep 2023 06:52:39 +0000 (+0200) Subject: BUG/MEDIUM: applet: Report an error if applet request more room on aborted SC X-Git-Tag: v2.9-dev5~42 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=d18657ae112aad2a87f80dfe006dc1a1bfc89d3a;p=thirdparty%2Fhaproxy.git BUG/MEDIUM: applet: Report an error if applet request more room on aborted SC If an abort was performed and the applet still request more room, it means the applet has not properly handle the error on its own. At least the CLI applet is concerned. Instead of reviewing all applets, the error is now handled in task_run_applet() function. Because of this bug, a session may be blocked infinitly and may also lead to a wakup loop. This patch must only be backported to 2.8 for now. And only to lower versions if a bug is reported because it is a bit sensitive and the code older versions are very different. --- diff --git a/src/applet.c b/src/applet.c index f4c5c862ed..0264d06b14 100644 --- a/src/applet.c +++ b/src/applet.c @@ -465,7 +465,10 @@ struct task *task_run_applet(struct task *t, void *context, unsigned int state) if (sc_ic(sc)->flags & CF_READ_EVENT) sc_ep_report_read_activity(sc); - if (channel_is_empty(sc_oc(sc))) + if (sc_waiting_room(sc) && (sc->flags & SC_FL_ABRT_DONE)) { + sc_ep_set(sc, SE_FL_EOS|SE_FL_ERROR); + } + else if (channel_is_empty(sc_oc(sc))) sc_ep_report_send_activity(sc); else { sc_ep_report_blocked_send(sc);