From: Christopher Faulet Date: Mon, 16 Jun 2025 14:29:07 +0000 (+0200) Subject: MINOR: cli: handle EOS/ERROR first X-Git-Tag: v3.3-dev2~52 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=fb7665552668df368bbc85ef56beca11c356f53a;p=thirdparty%2Fhaproxy.git 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. --- 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 */