From 956a62e2b68e1c042bf2bcddd6f4ba79fec9745a Mon Sep 17 00:00:00 2001 From: Timo Sirainen Date: Thu, 28 Jan 2016 17:03:15 +0200 Subject: [PATCH] doveadm: All commands iterating mails stop now if doveadm has been killed. --- src/doveadm/doveadm-mail-iter.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/doveadm/doveadm-mail-iter.c b/src/doveadm/doveadm-mail-iter.c index b7d833e15d..1e34d083a4 100644 --- a/src/doveadm/doveadm-mail-iter.c +++ b/src/doveadm/doveadm-mail-iter.c @@ -14,6 +14,7 @@ struct doveadm_mail_iter { struct mailbox *box; struct mailbox_transaction_context *t; struct mail_search_context *search_ctx; + bool killed; }; int doveadm_mail_iter_init(struct doveadm_mail_cmd_context *ctx, @@ -109,6 +110,10 @@ doveadm_mail_iter_deinit_full(struct doveadm_mail_iter **_iter, } if (ret < 0) doveadm_mail_failed_mailbox(iter->ctx, iter->box); + else if (iter->killed) { + iter->ctx->exit_code = EX_TEMPFAIL; + ret = -1; + } if (!keep_box) mailbox_free(&iter->box); i_free(iter); @@ -142,6 +147,10 @@ bool doveadm_mail_iter_next(struct doveadm_mail_iter *iter, { if (iter->search_ctx == NULL) return FALSE; + if (doveadm_is_killed()) { + iter->killed = TRUE; + return FALSE; + } return mailbox_search_next(iter->search_ctx, mail_r); } -- 2.47.3