From 3e6569234bcda87e81de3088374cf0239f3e528a Mon Sep 17 00:00:00 2001 From: Timo Sirainen Date: Thu, 1 Mar 2018 12:17:16 +0200 Subject: [PATCH] sdbox: Delete .temp* files on when save/copy transaction is rolled back For example when copying was aborted due to user being over quota, temp files were left behind. --- src/lib-storage/index/dbox-single/sdbox-save.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/lib-storage/index/dbox-single/sdbox-save.c b/src/lib-storage/index/dbox-single/sdbox-save.c index 7b914f8059..ee31390d62 100644 --- a/src/lib-storage/index/dbox-single/sdbox-save.c +++ b/src/lib-storage/index/dbox-single/sdbox-save.c @@ -368,13 +368,16 @@ void sdbox_transaction_save_commit_post(struct mail_save_context *_ctx, "fdatasync_path(%s) failed: %m", box_path); } } - sdbox_transaction_save_rollback(_ctx); + i_assert(ctx->ctx.finished); + dbox_save_unref_files(ctx); + i_free(ctx); } void sdbox_transaction_save_rollback(struct mail_save_context *_ctx) { struct sdbox_save_context *ctx = SDBOX_SAVECTX(_ctx); + ctx->ctx.failed = TRUE; if (!ctx->ctx.finished) sdbox_save_cancel(_ctx); dbox_save_unref_files(ctx);