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.
diff --git a/src/cli.c b/src/cli.c
index 1b4276f..0849cbe 100644
--- a/src/cli.c
+++ b/src/cli.c
@@ -2172,6 +2172,7 @@
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 @@
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;
}