From: Timo Sirainen Date: Wed, 29 Nov 2017 12:36:25 +0000 (+0200) Subject: lib-storage: Rename mail_storage.list_index_corrupted() to list_index_rebuild() X-Git-Tag: 2.3.0.rc1~285 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=82d1fe3d5d04fb11e3e89cce03dc4de191e58f75;p=thirdparty%2Fdovecot%2Fcore.git lib-storage: Rename mail_storage.list_index_corrupted() to list_index_rebuild() Also add a new parameter to it to specify the rebuild reason. --- diff --git a/src/lib-storage/list/mailbox-list-index.c b/src/lib-storage/list/mailbox-list-index.c index c41ee288b3..3edec116e4 100644 --- a/src/lib-storage/list/mailbox-list-index.c +++ b/src/lib-storage/list/mailbox-list-index.c @@ -587,9 +587,12 @@ int mailbox_list_index_handle_corruption(struct mailbox_list *list) { struct mailbox_list_index *ilist = INDEX_LIST_CONTEXT(list); struct mail_storage *const *storagep; + enum mail_storage_list_index_rebuild_reason reason; int ret = 0; - if (!ilist->call_corruption_callback) + if (ilist->call_corruption_callback) + reason = MAIL_STORAGE_LIST_INDEX_REBUILD_REASON_CORRUPTED; + else return 0; /* make sure we don't recurse */ @@ -598,8 +601,8 @@ int mailbox_list_index_handle_corruption(struct mailbox_list *list) ilist->handling_corruption = TRUE; array_foreach(&list->ns->all_storages, storagep) { - if ((*storagep)->v.list_index_corrupted != NULL) { - if ((*storagep)->v.list_index_corrupted(*storagep) < 0) + if ((*storagep)->v.list_index_rebuild != NULL) { + if ((*storagep)->v.list_index_rebuild(*storagep, reason) < 0) ret = -1; else { /* FIXME: implement a generic handler that diff --git a/src/lib-storage/mail-storage-private.h b/src/lib-storage/mail-storage-private.h index b80bbd9f7a..e86c283bee 100644 --- a/src/lib-storage/mail-storage-private.h +++ b/src/lib-storage/mail-storage-private.h @@ -20,6 +20,11 @@ #define MAIL_SHARED_STORAGE_NAME "shared" +enum mail_storage_list_index_rebuild_reason { + /* Mailbox list index was found to be corrupted. */ + MAIL_STORAGE_LIST_INDEX_REBUILD_REASON_CORRUPTED, +}; + struct mail_storage_module_register { unsigned int id; }; @@ -48,11 +53,12 @@ struct mail_storage_vfuncs { const char *vname, enum mailbox_flags flags); int (*purge)(struct mail_storage *storage); - /* Called when mailbox list index corruption has been detected. + /* Called when mailbox list index rebuild is requested. The callback should add any missing mailboxes to the list index. Returns 0 on success, -1 on temporary failure that didn't properly - fix the index. */ - int (*list_index_corrupted)(struct mail_storage *storage); + rebuild the index. */ + int (*list_index_rebuild)(struct mail_storage *storage, + enum mail_storage_list_index_rebuild_reason reason); }; union mail_storage_module_context {