]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
doveadm: Call mail command's init() only after service storage is initialized.
authorTimo Sirainen <tss@iki.fi>
Mon, 18 Oct 2010 17:30:02 +0000 (18:30 +0100)
committerTimo Sirainen <tss@iki.fi>
Mon, 18 Oct 2010 17:30:02 +0000 (18:30 +0100)
src/doveadm/client-connection.c
src/doveadm/doveadm-mail.c
src/doveadm/doveadm-mail.h

index f8e4f0c8d5f6c1800aed0c70b176ed8e6290b0aa..a8e5cb1bb27e5f97aa84b2e2302820939cee97b5 100644 (file)
@@ -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;
index 82fcc1cc44fc3c7b3aedc32097cb4313dbd8e3cb..70653ab7d0371513748f1042682a8fbf87540ead 100644 (file)
@@ -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();
index 0deb708301924004c68bded45368f3a0a8e6c48c..415b0a181bdf77286bab20b66ddb0e0c8afccd48 100644 (file)
@@ -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);