From 33af99655eed963ca2f091097566c09a96a75e7c Mon Sep 17 00:00:00 2001 From: Christopher Faulet Date: Fri, 7 Apr 2023 17:58:21 +0200 Subject: [PATCH] BUG/MEDIUM: cli: Set SE_FL_EOI flag for '_getsocks' and 'quit' commands An applet must never set SE_FL_EOS flag without SE_FL_EOI or SE_FL_ERROR flags. Here, SE_FL_EOI flag was missing for "quit" or "_getsocks" commands. Indeed, these commands are terminal. This bug triggers a BUG_ON() recently added. This patch is related to the issue #2107. It is 2.8-specific. No backport needed. --- src/cli.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/cli.c b/src/cli.c index 1b4276ff9..0849cbe9a 100644 --- a/src/cli.c +++ b/src/cli.c @@ -2172,6 +2172,7 @@ static int _getsocks(char **args, char *payload, struct appctx *appctx, void *pr ha_warning("Cannot make the unix socket non-blocking\n"); goto out; } + se_fl_set(appctx->sedesc, SE_FL_EOI); appctx->st0 = CLI_ST_END; free(cmsgbuf); free(tmpbuf); @@ -2186,9 +2187,11 @@ static int cli_parse_simple(char **args, char *payload, struct appctx *appctx, v else if (*args[0] == 'p') /* prompt */ appctx->st1 ^= APPCTX_CLI_ST1_PROMPT; - else if (*args[0] == 'q') + else if (*args[0] == 'q') { /* quit */ + se_fl_set(appctx->sedesc, SE_FL_EOI); appctx->st0 = CLI_ST_END; + } return 1; }