From: Christopher Faulet Date: Thu, 15 Feb 2024 16:27:08 +0000 (+0100) Subject: BUG/MEDIUM: applet: State appctx have more data if its EOI/EOS/ERROR flag is set X-Git-Tag: v3.0-dev7~57 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b8ca114031;p=thirdparty%2Fhaproxy.git BUG/MEDIUM: applet: State appctx have more data if its EOI/EOS/ERROR flag is set It is an harmless bug for now because only stats and cache applets are using their own buffers and it is not possible to trigger this bug with these applets. However, it remains important to try a receive if EOI, EOS or ERROR is reached by the applet while no data was produced. Otherwise, it is not possible to ack these events at the SE level. No backport needed. --- diff --git a/src/applet.c b/src/applet.c index def5c2aff6..90aa89f5da 100644 --- a/src/applet.c +++ b/src/applet.c @@ -910,7 +910,8 @@ struct task *task_process_applet(struct task *t, void *context, unsigned int sta TRACE_POINT(APPLET_EV_PROCESS, app); - if (b_data(&app->outbuf) || se_fl_test(app->sedesc, SE_FL_MAY_FASTFWD_PROD)) + if (b_data(&app->outbuf) || se_fl_test(app->sedesc, SE_FL_MAY_FASTFWD_PROD) || + applet_fl_test(app, APPCTX_FL_EOI|APPCTX_FL_EOS|APPCTX_FL_ERROR)) applet_have_more_data(app); sc_applet_sync_recv(sc);