]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
MINOR: cli: No longer check SC for shutdown to interrupt wait command
authorChristopher Faulet <cfaulet@haproxy.com>
Mon, 12 Feb 2024 21:29:06 +0000 (22:29 +0100)
committerChristopher Faulet <cfaulet@haproxy.com>
Wed, 14 Feb 2024 13:22:36 +0000 (14:22 +0100)
Thanks to the previous patch ("MEDIUM: applet: Add notion of shutdown for
write for applets"), it is no longer necessary to check SC flags to detect
shutdowns to interrupt the wait command. It is possible to remove this ugly
workaround. In addition, we only test the SE for shutdown because end of
stream and error are already checked by the CLI I/O handler. And it is no
longer necessary to remove output data from the channel's buffer because
shutdown are not reported if there are remaining outgoing data.

Of course, if the "wait" command is backported, the commit above and this
one must be backported too.

src/cli.c

index f5b5203bb1349f4987b39e87f09a79cc8b5a7e10..1d45374113a0321856f76e5d0a083a86c1d29159 100644 (file)
--- a/src/cli.c
+++ b/src/cli.c
@@ -2093,7 +2093,6 @@ static int cli_parse_wait(char **args, char *payload, struct appctx *appctx, voi
 static int cli_io_handler_wait(struct appctx *appctx)
 {
        struct cli_wait_ctx *ctx = appctx->svcctx;
-       struct stconn *sc = appctx_sc(appctx);
        uint total, elapsed, left, wait;
        int ret;
 
@@ -2147,12 +2146,11 @@ static int cli_io_handler_wait(struct appctx *appctx)
 
  wait:
        /* Stop waiting upon close/abort/error */
-       if (unlikely((sc->flags & SC_FL_SHUT_DONE) ||
-                    se_fl_test(appctx->sedesc, (SE_FL_EOS|SE_FL_ERROR|SE_FL_SHR|SE_FL_SHW)))) {
-               co_skip(sc_oc(sc), sc_oc(sc)->output);
+       if (unlikely(se_fl_test(appctx->sedesc, SE_FL_SHW))) {
                ctx->error = CLI_WAIT_ERR_INTR;
                return 1;
        }
+
        return 0;
 }