From: Timo Sirainen Date: Mon, 18 Oct 2010 17:30:02 +0000 (+0100) Subject: doveadm: Call mail command's init() only after service storage is initialized. X-Git-Tag: 2.0.6~33 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=354268abe5b47e263171aed3800c56f375a07355;p=thirdparty%2Fdovecot%2Fcore.git doveadm: Call mail command's init() only after service storage is initialized. --- diff --git a/src/doveadm/client-connection.c b/src/doveadm/client-connection.c index f8e4f0c8d5..a8e5cb1bb2 100644 --- a/src/doveadm/client-connection.c +++ b/src/doveadm/client-connection.c @@ -87,8 +87,7 @@ static bool doveadm_mail_cmd_server(const char *cmd_name, const char *username, doveadm_print_sticky("username", username); } - ctx->v.init(ctx, (const void *)argv); - doveadm_mail_single_user(ctx, username, service_flags); + doveadm_mail_single_user(ctx, argv, username, service_flags); ctx->v.deinit(ctx); doveadm_print_flush(); return !ctx->failed; diff --git a/src/doveadm/doveadm-mail.c b/src/doveadm/doveadm-mail.c index 82fcc1cc44..70653ab7d0 100644 --- a/src/doveadm/doveadm-mail.c +++ b/src/doveadm/doveadm-mail.c @@ -226,7 +226,7 @@ doveadm_mail_next_user(struct doveadm_mail_cmd_context *ctx, } void doveadm_mail_single_user(struct doveadm_mail_cmd_context *ctx, - const char *username, + char *argv[], const char *username, enum mail_storage_service_flags service_flags) { struct mail_storage_service_input input; @@ -241,6 +241,7 @@ void doveadm_mail_single_user(struct doveadm_mail_cmd_context *ctx, ctx->storage_service = mail_storage_service_init(master_service, NULL, service_flags); + ctx->v.init(ctx, (const void *)argv); if (hook_doveadm_mail_init != NULL) hook_doveadm_mail_init(ctx); @@ -258,7 +259,7 @@ static void sig_die(const siginfo_t *si, void *context ATTR_UNUSED) } static void -doveadm_mail_all_users(struct doveadm_mail_cmd_context *ctx, +doveadm_mail_all_users(struct doveadm_mail_cmd_context *ctx, char *argv[], const char *wildcard_user, enum mail_storage_service_flags service_flags) { @@ -277,6 +278,7 @@ doveadm_mail_all_users(struct doveadm_mail_cmd_context *ctx, lib_signals_set_handler(SIGINT, FALSE, sig_die, NULL); lib_signals_set_handler(SIGTERM, FALSE, sig_die, NULL); + ctx->v.init(ctx, (const void *)argv); if (hook_doveadm_mail_init != NULL) hook_doveadm_mail_init(ctx); @@ -410,13 +412,11 @@ doveadm_mail_cmd(const struct doveadm_mail_cmd *cmd, int argc, char *argv[]) DOVEADM_PRINT_HEADER_FLAG_HIDE_TITLE); } - ctx->v.init(ctx, (const void *)argv); - if (ctx->iterate_single_user) { - doveadm_mail_single_user(ctx, username, service_flags); + doveadm_mail_single_user(ctx, argv, username, service_flags); } else { service_flags |= MAIL_STORAGE_SERVICE_FLAG_TEMP_PRIV_DROP; - doveadm_mail_all_users(ctx, wildcard_user, service_flags); + doveadm_mail_all_users(ctx, argv, wildcard_user, service_flags); } ctx->v.deinit(ctx); doveadm_print_flush(); diff --git a/src/doveadm/doveadm-mail.h b/src/doveadm/doveadm-mail.h index 0deb708301..415b0a181b 100644 --- a/src/doveadm/doveadm-mail.h +++ b/src/doveadm/doveadm-mail.h @@ -82,7 +82,7 @@ void doveadm_mail_deinit(void); struct doveadm_mail_cmd_context * doveadm_mail_cmd_init(const struct doveadm_mail_cmd *cmd); void doveadm_mail_single_user(struct doveadm_mail_cmd_context *ctx, - const char *username, + char *argv[], const char *username, enum mail_storage_service_flags service_flags); int doveadm_mail_server_user(struct doveadm_mail_cmd_context *ctx, struct mail_storage_service_user *user);