From e018e8a4195845eb13fced1b6590bf1283bb375c Mon Sep 17 00:00:00 2001 From: Christopher Faulet Date: Tue, 20 Feb 2024 16:37:11 +0100 Subject: [PATCH] MINOR: cli: Remove useless loop on commands to find unescaped semi-colon This loop was added to detect pipelined commands when only co_getline() was used to get commands. Now, co_getdelim() is used and the semi-colon is also considered as a command delimiter. As side effet, the last semi-colon, if any, is no longer replaced by a newline. Thus, we must take care to adapt the test to detect partial commands. --- src/cli.c | 18 +----------------- 1 file changed, 1 insertion(+), 17 deletions(-) diff --git a/src/cli.c b/src/cli.c index 1d4537411..52a8d2651 100644 --- a/src/cli.c +++ b/src/cli.c @@ -987,29 +987,13 @@ static void cli_io_handler(struct appctx *appctx) continue; } - if (!(appctx->st1 & APPCTX_CLI_ST1_PAYLOAD)) { - /* seek for a possible unescaped semi-colon. If we find - * one, we replace it with an LF and skip only this part. - */ - for (len = 0; len < reql; len++) { - if (str[len] == '\\') { - len++; - continue; - } - if (str[len] == ';') { - str[len] = '\n'; - reql = len + 1; - break; - } - } - } /* now it is time to check that we have a full line, * remove the trailing \n and possibly \r, then cut the * line. */ len = reql - 1; - if (str[len] != '\n') { + if (str[len] != '\n' && str[len] != ';') { se_fl_set(appctx->sedesc, SE_FL_ERROR); appctx->st0 = CLI_ST_END; continue;