From 452b838c1b483c7663fd9ef2e4578ff76758a426 Mon Sep 17 00:00:00 2001 From: Timo Sirainen Date: Thu, 1 Jul 2010 16:28:15 +0100 Subject: [PATCH] mdbox: Error handling fixes. --HG-- branch : HEAD --- src/lib-storage/index/dbox-multi/mdbox-map.c | 7 +++++-- src/lib-storage/index/dbox-multi/mdbox-save.c | 2 ++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/lib-storage/index/dbox-multi/mdbox-map.c b/src/lib-storage/index/dbox-multi/mdbox-map.c index 85544b6d2b..3141b60de7 100644 --- a/src/lib-storage/index/dbox-multi/mdbox-map.c +++ b/src/lib-storage/index/dbox-multi/mdbox-map.c @@ -481,13 +481,16 @@ int mdbox_map_atomic_finish(struct mdbox_map_atomic_context **_atomic) *_atomic = NULL; - if (atomic->success) { + if (atomic->sync_ctx == NULL) { + /* not locked */ + i_assert(!atomic->locked); + } else if (atomic->success) { if (mail_index_sync_commit(&atomic->sync_ctx) < 0) { mail_storage_set_internal_error(MAP_STORAGE(atomic->map)); mail_index_reset_error(atomic->map->index); ret = -1; } - } else if (atomic->sync_ctx != NULL) { + } else { mail_index_sync_rollback(&atomic->sync_ctx); } i_free(atomic); diff --git a/src/lib-storage/index/dbox-multi/mdbox-save.c b/src/lib-storage/index/dbox-multi/mdbox-save.c index 7ad581362f..0eeea38d2a 100644 --- a/src/lib-storage/index/dbox-multi/mdbox-save.c +++ b/src/lib-storage/index/dbox-multi/mdbox-save.c @@ -141,6 +141,8 @@ int mdbox_save_begin(struct mail_save_context *_ctx, struct istream *input) if (mdbox_map_append_next(ctx->append_ctx, mail_size, 0, &ctx->cur_file_append, &ctx->ctx.dbox_output) < 0) { + ctx->cur_file_append = NULL; + ctx->ctx.dbox_output = NULL; ctx->ctx.failed = TRUE; return -1; } -- 2.47.3