From 1fb97e47f01ec88e7c9925fc7c94dd2d8bb8a364 Mon Sep 17 00:00:00 2001 From: Christopher Faulet Date: Fri, 7 Apr 2023 18:07:51 +0200 Subject: [PATCH] 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. --- src/cli.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/cli.c b/src/cli.c index 0849cbe9a..820a45adc 100644 --- a/src/cli.c +++ b/src/cli.c @@ -893,8 +893,10 @@ static void cli_io_handler(struct appctx *appctx) int reql; 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; + } /* Check if the input buffer is available. */ if (!b_size(&res->buf)) {