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.
This commit is contained in:
Christopher Faulet 2023-09-06 08:52:39 +02:00
parent 34645a6365
commit d18657ae11

View File

@ -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);