}
static int
-doveadm_mail_next_user(struct doveadm_mail_cmd_context *ctx,
+doveadm_mail_next_user(struct doveadm_mail_cmd_context *ctx, bool init_user,
const struct mail_storage_service_input *input,
const char **error_r)
{
if (ret != 0)
return ret;
+ if (init_user) {
+ /* call init() after we've checked whether we want to do this
+ via doveadm-server or not */
+ ctx->v.init(ctx, ctx->args);
+ if (hook_doveadm_mail_init != NULL)
+ hook_doveadm_mail_init(ctx);
+ }
+
ret = mail_storage_service_lookup(ctx->storage_service, input,
&ctx->cur_service_user, &error);
if (ret <= 0) {
ctx->storage_service_input = *input;
ctx->storage_service = mail_storage_service_init(master_service, NULL,
ctx->service_flags);
- ctx->v.init(ctx, ctx->args);
- if (hook_doveadm_mail_init != NULL)
- hook_doveadm_mail_init(ctx);
-
- return doveadm_mail_next_user(ctx, input, error_r);
+ return doveadm_mail_next_user(ctx, TRUE, input, error_r);
}
static void sig_die(const siginfo_t *si, void *context ATTR_UNUSED)
ctx->cur_username = user;
doveadm_print_sticky("username", user);
T_BEGIN {
- ret = doveadm_mail_next_user(ctx, &input, &error);
+ ret = doveadm_mail_next_user(ctx, FALSE, &input, &error);
if (ret < 0)
i_error("%s", error);
else if (ret == 0)