diff --git a/include/haproxy/cli-t.h b/include/haproxy/cli-t.h index bc868683c..4a11893ed 100644 --- a/include/haproxy/cli-t.h +++ b/include/haproxy/cli-t.h @@ -101,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_* + char *args[4]; // up to 4 args taken at parse time, all strduped const char *msg; // static error message for failures if not NULL }; diff --git a/src/cli.c b/src/cli.c index 1cede7729..786f2a24e 100644 --- a/src/cli.c +++ b/src/cli.c @@ -2116,6 +2116,7 @@ static void cli_release_wait(struct appctx *appctx) { struct cli_wait_ctx *ctx = appctx->svcctx; const char *msg; + int i; switch (ctx->error) { case CLI_WAIT_ERR_EXP: msg = "Wait delay expired.\n"; break; @@ -2124,6 +2125,9 @@ static void cli_release_wait(struct appctx *appctx) default: msg = "Done.\n"; break; } + for (i = 0; i < sizeof(ctx->args) / sizeof(ctx->args[0]); i++) + ha_free(&ctx->args[i]); + if (ctx->error == CLI_WAIT_ERR_DONE) cli_msg(appctx, LOG_INFO, msg); else