From 8c8f6ed0a46db6589c08d8db1f4ed779ef5bc19b Mon Sep 17 00:00:00 2001 From: Timo Sirainen Date: Fri, 20 May 2016 15:55:52 +0300 Subject: [PATCH] doveadm backup: Fixed unnecessary mailbox deletion. Broken by 79490ec1a. The idea is to delete the mailbox early to avoid unnecessary work, but we deleted it too early. If the last mail(s) were deleted instead of just expunging them we deleted the whole mailbox. --- src/doveadm/dsync/dsync-mailbox-import.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/doveadm/dsync/dsync-mailbox-import.c b/src/doveadm/dsync/dsync-mailbox-import.c index 148c8dd5b7..4bcbc2eb12 100644 --- a/src/doveadm/dsync/dsync-mailbox-import.c +++ b/src/doveadm/dsync/dsync-mailbox-import.c @@ -783,9 +783,10 @@ static bool dsync_mailbox_try_save_cur(struct dsync_mailbox_importer *importer, /* add a record for local mail */ i_assert(importer->cur_mail != NULL); if (importer->revert_local_changes) { - if (save_change == NULL) { + if (save_change == NULL && + importer->cur_mail->uid >= importer->remote_uid_next) { dsync_mailbox_revert_existing_uid(importer, importer->cur_mail->uid, - t_strdup_printf("highest than remote's UIDs (remote UIDNEXT=%u)", importer->remote_uid_next)); + t_strdup_printf("higher than remote's UIDs (remote UIDNEXT=%u)", importer->remote_uid_next)); return TRUE; } mail_expunge(importer->cur_mail); -- 2.47.3