From d18657ae112aad2a87f80dfe006dc1a1bfc89d3a Mon Sep 17 00:00:00 2001 From: Christopher Faulet Date: Wed, 6 Sep 2023 08:52:39 +0200 Subject: [PATCH] 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. --- src/applet.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/applet.c b/src/applet.c index f4c5c862e..0264d06b1 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);