changeset 19662:a1e05123f776

doveadm: All commands iterating mails stop now if doveadm has been killed.
author Timo Sirainen <timo.sirainen@dovecot.fi>
date Thu, 28 Jan 2016 17:03:15 +0200
parents 166d2d3f57f8
children befd1785a11f
files src/doveadm/doveadm-mail-iter.c
diffstat 1 files changed, 9 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/doveadm/doveadm-mail-iter.c	Thu Jan 28 16:59:48 2016 +0200
+++ b/src/doveadm/doveadm-mail-iter.c	Thu Jan 28 17:03:15 2016 +0200
@@ -14,6 +14,7 @@
 	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 @@
 	}
 	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 @@
 {
 	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);
 }