/* service deinit unloads mail plugins, so do it late */
mail_storage_service_deinit(&ctx->storage_service);
+ if (ctx->exit_code != 0)
+ doveadm_exit_code = ctx->exit_code;
+}
+
+static void doveadm_mail_cmd_free(struct doveadm_mail_cmd_context *ctx)
+{
if (ctx->users_list_input != NULL)
i_stream_unref(&ctx->users_list_input);
if (ctx->cmd_input != NULL)
i_stream_unref(&ctx->cmd_input);
- if (ctx->exit_code != 0)
- doveadm_exit_code = ctx->exit_code;
pool_unref(&ctx->pool);
}
}
ctx->args = (const void *)argv;
doveadm_mail_cmd_exec(ctx, wildcard_user);
+ doveadm_mail_cmd_free(ctx);
}
static bool
} else {
doveadm_exit_code = EX_USAGE;
i_error("invalid parameter: %s", argv[i].name);
+ doveadm_mail_cmd_free(ctx);
return -1;
}
}
ctx->full_args = ctx->args;
doveadm_mail_cmd_exec(ctx, wildcard_user);
+ doveadm_mail_cmd_free(ctx);
return 0;
}