From: Timo Sirainen Date: Tue, 29 Jun 2010 18:04:20 +0000 (+0100) Subject: doveadm altmove: Sync all mailboxes after moving mails. X-Git-Tag: 2.0.rc1~63 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=1b7e7ff3c57f4ff0ba5f8b8a2a26e8669f0ba7fd;p=thirdparty%2Fdovecot%2Fcore.git doveadm altmove: Sync all mailboxes after moving mails. --HG-- branch : HEAD --- diff --git a/src/doveadm/doveadm-mail-altmove.c b/src/doveadm/doveadm-mail-altmove.c index f4631d808a..9b31abd4ff 100644 --- a/src/doveadm/doveadm-mail-altmove.c +++ b/src/doveadm/doveadm-mail-altmove.c @@ -30,7 +30,7 @@ cmd_altmove_box(const struct mailbox_info *info, MAIL_INDEX_MAIL_FLAG_BACKEND); } mail_free(&mail); - return doveadm_mail_iter_deinit(&iter); + return doveadm_mail_iter_deinit_sync(&iter); } static void ns_purge(struct mail_namespace *ns) diff --git a/src/doveadm/doveadm-mail-iter.c b/src/doveadm/doveadm-mail-iter.c index f57433fb46..26ba2fcdac 100644 --- a/src/doveadm/doveadm-mail-iter.c +++ b/src/doveadm/doveadm-mail-iter.c @@ -70,7 +70,8 @@ doveadm_mail_iter_deinit_transaction(struct doveadm_mail_iter *iter) return ret; } -int doveadm_mail_iter_deinit(struct doveadm_mail_iter **_iter) +static int +doveadm_mail_iter_deinit_full(struct doveadm_mail_iter **_iter, bool sync) { struct doveadm_mail_iter *iter = *_iter; int ret; @@ -78,11 +79,23 @@ int doveadm_mail_iter_deinit(struct doveadm_mail_iter **_iter) *_iter = NULL; ret = doveadm_mail_iter_deinit_transaction(iter); + if (ret == 0 && sync) + ret = mailbox_sync(iter->box, 0); mailbox_free(&iter->box); i_free(iter); return ret; } +int doveadm_mail_iter_deinit(struct doveadm_mail_iter **_iter) +{ + return doveadm_mail_iter_deinit_full(_iter, FALSE); +} + +int doveadm_mail_iter_deinit_sync(struct doveadm_mail_iter **_iter) +{ + return doveadm_mail_iter_deinit_full(_iter, TRUE); +} + bool doveadm_mail_iter_next(struct doveadm_mail_iter *iter, struct mail *mail) { return mailbox_search_next(iter->search_ctx, mail); diff --git a/src/doveadm/doveadm-mail-iter.h b/src/doveadm/doveadm-mail-iter.h index 98fa3c0acd..037a317977 100644 --- a/src/doveadm/doveadm-mail-iter.h +++ b/src/doveadm/doveadm-mail-iter.h @@ -8,6 +8,7 @@ int doveadm_mail_iter_init(const struct mailbox_info *info, struct mailbox_transaction_context **trans_r, struct doveadm_mail_iter **iter_r); int doveadm_mail_iter_deinit(struct doveadm_mail_iter **iter); +int doveadm_mail_iter_deinit_sync(struct doveadm_mail_iter **iter); bool doveadm_mail_iter_next(struct doveadm_mail_iter *iter, struct mail *mail);