BUG/MEDIUM: cli: Eat output data when waiting for appctx shutdown

When the cli applet is executed while a shut is pending, the remaining
output data must always be consumed. Otherwise, this can prevent the stream
to exit, leading to a spinning loop on the applet.

This patch should fix the issue #2107. It is 2.8-specific. No backport
needed.
This commit is contained in:
Christopher Faulet 2023-04-07 18:07:51 +02:00
parent 33af99655e
commit 1fb97e47f0

View File

@ -893,8 +893,10 @@ static void cli_io_handler(struct appctx *appctx)
int reql; int reql;
int len; int len;
if (unlikely(se_fl_test(appctx->sedesc, (SE_FL_EOS|SE_FL_ERROR|SE_FL_SHR|SE_FL_SHW)))) if (unlikely(se_fl_test(appctx->sedesc, (SE_FL_EOS|SE_FL_ERROR|SE_FL_SHR|SE_FL_SHW)))) {
co_skip(sc_oc(sc), co_data(sc_oc(sc)));
goto out; goto out;
}
/* Check if the input buffer is available. */ /* Check if the input buffer is available. */
if (!b_size(&res->buf)) { if (!b_size(&res->buf)) {