array_foreach_elem(&ctx->commands, cmd) {
cmd->cur_mail_user = user;
- if (cmd->v.run(cmd, user) < 0) {
+ const char *reason_code =
+ event_reason_code_prefix("doveadm", "cmd_",
+ cmd->cmd->name);
+ struct event_reason *reason = event_reason_begin(reason_code);
+ int ret = cmd->v.run(cmd, user);
+ event_reason_end(&reason);
+ if (ret < 0) {
i_assert(cmd->exit_code != 0);
_ctx->exit_code = cmd->exit_code;
ret = -1;
return ret;
}
+ struct event_reason *reason =
+ event_reason_begin(event_reason_code_prefix("doveadm", "cmd_",
+ ctx->cmd->name));
T_BEGIN {
if (ctx->v.run(ctx, ctx->cur_mail_user) < 0) {
i_assert(ctx->exit_code != 0);
}
} T_END;
mail_user_deinit(&ctx->cur_mail_user);
+ /* user deinit may still do some work, so finish the reason after it */
+ event_reason_end(&reason);
+
mail_storage_service_user_unref(&ctx->cur_service_user);
return 1;
}