From fb7665552668df368bbc85ef56beca11c356f53a Mon Sep 17 00:00:00 2001 From: Christopher Faulet Date: Mon, 16 Jun 2025 16:29:07 +0200 Subject: [PATCH] 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. --- src/cli.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/cli.c b/src/cli.c index f76a91dcf..875b68c10 100644 --- a/src/cli.c +++ b/src/cli.c @@ -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 */