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