MINOR: cli: handle EOS/ERROR first

It is not especially a bug fixed. But APPCTX_FL_EOS and APPCTX_FL_ERROR
flags must be handled first. These flags are set by the applet itself and
should mark the end of all processing. So there is not reason to get the
output buffer in first place.

This patch could be backported as far as 3.0.
This commit is contained in:
Christopher Faulet 2025-06-16 16:29:07 +02:00
parent 396f0252bf
commit fb76655526

View File

@ -1086,17 +1086,18 @@ int cli_parse_cmdline(struct appctx *appctx)
*/
void cli_io_handler(struct appctx *appctx)
{
if (applet_fl_test(appctx, APPCTX_FL_OUTBLK_ALLOC|APPCTX_FL_OUTBLK_FULL) ||
!appctx_get_buf(appctx, &appctx->outbuf)) {
applet_wont_consume(appctx);
goto out;
}
if (unlikely(applet_fl_test(appctx, APPCTX_FL_EOS|APPCTX_FL_ERROR))) {
appctx->st0 = CLI_ST_END;
goto out;
}
if (applet_fl_test(appctx, APPCTX_FL_OUTBLK_ALLOC|APPCTX_FL_OUTBLK_FULL) ||
!appctx_get_buf(appctx, &appctx->outbuf)) {
applet_wont_consume(appctx);
goto out;
}
while (1) {
if (appctx->st0 == CLI_ST_INIT) {
/* reset severity to default at init */