From: Timo Sirainen Date: Mon, 25 Dec 2017 17:34:31 +0000 (+0200) Subject: imapc: If mailbox select fails, rollback any changes done to it X-Git-Tag: 2.3.9~2507 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=315dcc5eb03651bdb4c59aa10b25980229865c14;p=thirdparty%2Fdovecot%2Fcore.git imapc: If mailbox select fails, rollback any changes done to it Required by the following changes that start adding changes immediately after SELECT. If the initial syncing doesn't finish successfully, these changes need to be reverted. --- diff --git a/src/lib-storage/index/imapc/imapc-mailbox.c b/src/lib-storage/index/imapc/imapc-mailbox.c index 72053db3de..5ef82783d8 100644 --- a/src/lib-storage/index/imapc/imapc-mailbox.c +++ b/src/lib-storage/index/imapc/imapc-mailbox.c @@ -100,7 +100,12 @@ int imapc_mailbox_commit_delayed_trans(struct imapc_mailbox *mbox, if (mbox->delayed_sync_view != NULL) mail_index_view_close(&mbox->delayed_sync_view); - if (mbox->delayed_sync_trans != NULL) { + if (mbox->delayed_sync_trans == NULL) + ; + else if (!mbox->selected) { + /* ignore any changes done during SELECT */ + mail_index_transaction_rollback(&mbox->delayed_sync_trans); + } else { if (mail_index_transaction_commit(&mbox->delayed_sync_trans) < 0) { mailbox_set_index_error(&mbox->box); ret = -1;