BUG/MINOR: cli: wait for payload data even without prompt

During a payload transfer, we need to wait for the data even when we are
not in interactive mode. Indeed, the data could be received line per
line progressively instead of in one recv.

Previously the CLI was doing a SHUTW just after the first line if it was
not in interactive mode. We now check if we are in payload mode to do
a SHUTW.

Should be backported in 1.8.
This commit is contained in:
William Lallemand 2018-12-11 16:10:56 +01:00 committed by Willy Tarreau
parent 5f61068dbd
commit 3de09d5c7e

View File

@ -758,7 +758,8 @@ static void cli_io_handler(struct appctx *appctx)
* buffer is empty. This still allows pipelined requests * buffer is empty. This still allows pipelined requests
* to be sent in non-interactive mode. * to be sent in non-interactive mode.
*/ */
if ((res->flags & (CF_SHUTW|CF_SHUTW_NOW)) || (!(appctx->st1 & APPCTX_CLI_ST1_PROMPT) && !co_data(req))) { if (((res->flags & (CF_SHUTW|CF_SHUTW_NOW))) ||
(!(appctx->st1 & APPCTX_CLI_ST1_PROMPT) && !co_data(req) && (!(appctx->st1 & APPCTX_CLI_ST1_PAYLOAD)))) {
appctx->st0 = CLI_ST_END; appctx->st0 = CLI_ST_END;
continue; continue;
} }