diff --git a/src/managesieve/managesieve-client.c b/src/managesieve/managesieve-client.c index f110c573ed6d65ebbdb62b4d8373b369255bd7fe..c4c8e970dced0738d2e80b522051f5061e4b9c12 100644 --- a/src/managesieve/managesieve-client.c +++ b/src/managesieve/managesieve-client.c @@ -444,6 +444,7 @@ bool client_read_args(struct client_command_context *cmd, unsigned int count, const struct managesieve_arg **args_r) { const struct managesieve_arg *dummy_args_r = NULL; + string_t *str; int ret; if (args_r == NULL) @@ -467,6 +468,10 @@ bool client_read_args(struct client_command_context *cmd, unsigned int count, } } + str = t_str_new(256); + managesieve_write_args(str, *args_r); + cmd->args = p_strdup(cmd->pool, str_c(str)); + /* all parameters read successfully */ return TRUE; } else if (ret == -2) { diff --git a/src/managesieve/managesieve-client.h b/src/managesieve/managesieve-client.h index b640a54a2fa488dbbff4eaa48844f0e6f0991bde..9c40448ccd451390221777e203cc7a795fc73bf4 100644 --- a/src/managesieve/managesieve-client.h +++ b/src/managesieve/managesieve-client.h @@ -12,7 +12,12 @@ struct client_command_context { struct client *client; pool_t pool; + /* Name of this command */ const char *name; + /* Parameters for this command. These are generated from parsed + ManageSieve arguments, so they may not be exactly the same as how + client sent them. */ + const char *args; command_func_t *func; void *context;