From: Willy Tarreau Date: Fri, 9 Feb 2024 19:05:14 +0000 (+0100) Subject: MINOR: cli/wait: also support an unrecoverable failure status X-Git-Tag: v3.0-dev3~6 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2673f8be82b7daa88b5420aa58fefd70e309e281;p=thirdparty%2Fhaproxy.git MINOR: cli/wait: also support an unrecoverable failure status Since we'll support waiting for an action to succeed or permanently fail, we need the ability to return an unrecoverable failure. Let's add CLI_WAIT_ERR_FAIL for this. A static error message may be placed into ctx->msg to report to the user why the failure is unrecoverable. --- diff --git a/include/haproxy/cli-t.h b/include/haproxy/cli-t.h index 9334fcd9f0..bc868683cf 100644 --- a/include/haproxy/cli-t.h +++ b/include/haproxy/cli-t.h @@ -90,6 +90,7 @@ enum cli_wait_err { CLI_WAIT_ERR_DONE, // condition satisfied CLI_WAIT_ERR_INTR, // interrupted CLI_WAIT_ERR_EXP, // finished on wait expiration + CLI_WAIT_ERR_FAIL, // finished early (unrecoverable) }; enum cli_wait_cond { @@ -100,6 +101,7 @@ struct cli_wait_ctx { uint start, deadline; // both are in ticks. enum cli_wait_cond cond; // CLI_WAIT_COND_* enum cli_wait_err error; // CLI_WAIT_ERR_* + const char *msg; // static error message for failures if not NULL }; struct cli_kw { diff --git a/src/cli.c b/src/cli.c index 7c88917a70..1cede7729e 100644 --- a/src/cli.c +++ b/src/cli.c @@ -2120,6 +2120,7 @@ static void cli_release_wait(struct appctx *appctx) switch (ctx->error) { case CLI_WAIT_ERR_EXP: msg = "Wait delay expired.\n"; break; case CLI_WAIT_ERR_INTR: msg = "Interrupted.\n"; break; + case CLI_WAIT_ERR_FAIL: msg = ctx->msg ? ctx->msg : "Failed.\n"; break; default: msg = "Done.\n"; break; }