From 2673f8be82b7daa88b5420aa58fefd70e309e281 Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Fri, 9 Feb 2024 20:05:14 +0100 Subject: [PATCH] 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. --- include/haproxy/cli-t.h | 2 ++ src/cli.c | 1 + 2 files changed, 3 insertions(+) diff --git a/include/haproxy/cli-t.h b/include/haproxy/cli-t.h index 9334fcd9f..bc868683c 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 7c88917a7..1cede7729 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; }