mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2025-02-16 10:36:55 +00:00
MINOR: cli/wait: also pass up to 4 arguments to the external conditions
Conditions will need to have context, arguments etc from the command line. Since these will vary with time (otherwise we wouldn't wait), let's just pass them as text (possibly pre-processed). We're starting with 4 strings that are expected to be allocated by strdup() and are always sent to free() upon release.
This commit is contained in:
parent
2673f8be82
commit
66989ff426
@ -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
|
||||
};
|
||||
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user