]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
dbox: Revert cache changes if some save/copy fails but transaction is committed.
authorTimo Sirainen <timo.sirainen@dovecot.fi>
Fri, 27 May 2016 18:55:56 +0000 (21:55 +0300)
committerTimo Sirainen <timo.sirainen@dovecot.fi>
Fri, 27 May 2016 18:55:56 +0000 (21:55 +0300)
src/lib-storage/index/dbox-multi/mdbox-save.c
src/lib-storage/index/dbox-single/sdbox-save.c

index 6d1b354f7702c068245db6bc85a0242e913882ab..857ff7b7b2f8b2f66dfb13d1b5f576b8b8aa4cd0 100644 (file)
@@ -216,6 +216,7 @@ static int mdbox_save_finish_write(struct mail_save_context *_ctx)
 
        if (ctx->ctx.failed) {
                mail_index_expunge(ctx->ctx.trans, ctx->ctx.seq);
+               mail_cache_transaction_reset(ctx->ctx.ctx.transaction->cache_trans);
                mdbox_map_append_abort(ctx->append_ctx);
                array_delete(&ctx->mails, array_count(&ctx->mails) - 1, 1);
                return -1;
index 919a628225ae5acfee567a38d5542aba665dcea6..9f0eff8852bf3c67edc4c7164c65614136843896 100644 (file)
@@ -195,6 +195,7 @@ static int dbox_save_finish_write(struct mail_save_context *_ctx)
 
        if (ctx->ctx.failed) {
                mail_index_expunge(ctx->ctx.trans, ctx->ctx.seq);
+               mail_cache_transaction_reset(ctx->ctx.ctx.transaction->cache_trans);
                dbox_file_append_rollback(&ctx->append_ctx);
                dbox_file_unlink(*files);
                dbox_file_unref(files);