]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
doveadm altmove: Sync all mailboxes after moving mails.
authorTimo Sirainen <tss@iki.fi>
Tue, 29 Jun 2010 18:04:20 +0000 (19:04 +0100)
committerTimo Sirainen <tss@iki.fi>
Tue, 29 Jun 2010 18:04:20 +0000 (19:04 +0100)
--HG--
branch : HEAD

src/doveadm/doveadm-mail-altmove.c
src/doveadm/doveadm-mail-iter.c
src/doveadm/doveadm-mail-iter.h

index f4631d808ae1b3e4de030c32ca75407240495975..9b31abd4ff90a18595fb623d4a20fcbd101c0537 100644 (file)
@@ -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)
index f57433fb46be8d01a353d68319cfded136807e05..26ba2fcdac9e124256862fc2ffbe06056d63665b 100644 (file)
@@ -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);
index 98fa3c0acde77522dbc218103907f8ecd22b6118..037a317977c4286d86090f10a4922652a1d3eaf4 100644 (file)
@@ -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);