]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
mdbox: Use mail_storage_set_index_error() instead of poorly duplicating it
authorTimo Sirainen <timo.sirainen@dovecot.fi>
Mon, 21 Aug 2017 12:44:41 +0000 (15:44 +0300)
committerAki Tuomi <aki.tuomi@dovecot.fi>
Fri, 25 Aug 2017 12:56:10 +0000 (15:56 +0300)
src/lib-storage/index/dbox-multi/mdbox-map.c
src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c

index 7d23ab636aa2ff95a94c2bf7240dbe29fc1107a4..34b92740b26cf9cae07c5915fc7eb592dc12504e 100644 (file)
@@ -169,8 +169,7 @@ static int mdbox_map_open_internal(struct mdbox_map *map, bool create_missing)
                ret = mail_index_open(map->index, open_flags);
        }
        if (ret < 0) {
-               mail_storage_set_internal_error(MAP_STORAGE(map));
-               mail_index_reset_error(map->index);
+               mail_storage_set_index_error(MAP_STORAGE(map), map->index);
                return -1;
        }
        if (ret == 0) {
@@ -183,10 +182,12 @@ static int mdbox_map_open_internal(struct mdbox_map *map, bool create_missing)
        mdbox_map_cleanup(map);
 
        if (mail_index_get_header(map->view)->uid_validity == 0) {
-               if (mdbox_map_generate_uid_validity(map) < 0 ||
-                   mdbox_map_refresh(map) < 0) {
-                       mail_storage_set_internal_error(MAP_STORAGE(map));
-                       mail_index_reset_error(map->index);
+               if (mdbox_map_generate_uid_validity(map) < 0) {
+                       mail_storage_set_index_error(MAP_STORAGE(map), map->index);
+                       mail_index_close(map->index);
+                       return -1;
+               }
+               if (mdbox_map_refresh(map) < 0) {
                        mail_index_close(map->index);
                        return -1;
                }
@@ -216,8 +217,7 @@ int mdbox_map_refresh(struct mdbox_map *map)
        mdbox_files_sync_input(map->storage);
 
        if (mail_index_refresh(map->view->index) < 0) {
-               mail_storage_set_internal_error(MAP_STORAGE(map));
-               mail_index_reset_error(map->index);
+               mail_storage_set_index_error(MAP_STORAGE(map), map->index);
                return -1;
        }
        if (mail_index_view_get_transaction_count(map->view) > 0) {
@@ -229,8 +229,7 @@ int mdbox_map_refresh(struct mdbox_map *map)
                                MAIL_INDEX_VIEW_SYNC_FLAG_FIX_INCONSISTENT);
        fscked = mail_index_reset_fscked(map->view->index);
        if (mail_index_view_sync_commit(&ctx, &delayed_expunges) < 0) {
-               mail_storage_set_internal_error(MAP_STORAGE(map));
-               mail_index_reset_error(map->index);
+               mail_storage_set_index_error(MAP_STORAGE(map), map->index);
                ret = -1;
        }
        if (fscked)
@@ -515,8 +514,8 @@ int mdbox_map_atomic_lock(struct mdbox_map_atomic_context *atomic,
                mdbox_storage_set_corrupted(atomic->map->storage);
        if (ret <= 0) {
                i_assert(ret != 0);
-               mail_storage_set_internal_error(MAP_STORAGE(atomic->map));
-               mail_index_reset_error(atomic->map->index);
+               mail_storage_set_index_error(MAP_STORAGE(atomic->map),
+                                            atomic->map->index);
                return -1;
        }
        mail_index_sync_set_reason(atomic->sync_ctx, reason);
@@ -562,8 +561,8 @@ int mdbox_map_atomic_finish(struct mdbox_map_atomic_context **_atomic)
                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);
+                       mail_storage_set_index_error(MAP_STORAGE(atomic->map),
+                                                    atomic->map->index);
                        ret = -1;
                }
        } else {
@@ -616,8 +615,8 @@ int mdbox_map_transaction_commit(struct mdbox_map_transaction_context *ctx,
                return -1;
 
        if (mail_index_transaction_commit(&ctx->trans) < 0) {
-               mail_storage_set_internal_error(MAP_STORAGE(ctx->atomic->map));
-               mail_index_reset_error(ctx->atomic->map->index);
+               mail_storage_set_index_error(MAP_STORAGE(ctx->atomic->map),
+                                            ctx->atomic->map->index);
                return -1;
        }
        mdbox_map_atomic_set_success(ctx->atomic);
@@ -1333,8 +1332,8 @@ int mdbox_map_append_assign_map_uids(struct mdbox_map_append_context *ctx,
        }
 
        if (mail_index_transaction_commit(&ctx->trans) < 0) {
-               mail_storage_set_internal_error(MAP_STORAGE(ctx->map));
-               mail_index_reset_error(ctx->map->index);
+               mail_storage_set_index_error(MAP_STORAGE(ctx->map),
+                                            ctx->map->index);
                return -1;
        }
 
index 0fa145cc68cc7e9198e999e9e53a32144e224c5a..746cb604bd3c74189a1ee2ec69b79db0872fc888 100644 (file)
@@ -911,7 +911,8 @@ static int mdbox_storage_rebuild_scan(struct mdbox_storage_rebuild_context *ctx)
 
        /* fsck the map just in case its UIDs are broken */
        if (mail_index_fsck(ctx->storage->map->index) < 0) {
-               mail_storage_set_internal_error(&ctx->storage->storage.storage);
+               mail_storage_set_index_error(&ctx->storage->storage.storage,
+                                            ctx->storage->map->index);
                return -1;
        }