From: Aki Tuomi Date: Fri, 13 Aug 2021 07:29:59 +0000 (+0300) Subject: lib-storage: Add fields to mail_storage needed for list rebuild X-Git-Tag: 2.3.17~148 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=a92b1f9316df4de82717c6de67610befe1e9c3ce;p=thirdparty%2Fdovecot%2Fcore.git lib-storage: Add fields to mail_storage needed for list rebuild --- diff --git a/src/lib-storage/mail-storage-private.h b/src/lib-storage/mail-storage-private.h index dc035a851c..c9847f5271 100644 --- a/src/lib-storage/mail-storage-private.h +++ b/src/lib-storage/mail-storage-private.h @@ -12,6 +12,7 @@ struct file_lock; struct file_create_settings; +struct fs; /* Default prefix for indexes */ #define MAIL_INDEX_PREFIX "dovecot.index" @@ -23,6 +24,8 @@ struct file_create_settings; #define MAIL_SHARED_STORAGE_NAME "shared" +#define MAIL_STORAGE_LOST_MAILBOX_PREFIX "recovered-lost-folder-" + enum mail_storage_list_index_rebuild_reason { /* Mailbox list index was found to be corrupted. */ MAIL_STORAGE_LIST_INDEX_REBUILD_REASON_CORRUPTED, @@ -153,6 +156,9 @@ struct mail_storage { * uniqueness checking (via strcmp) and never used as a path. */ const char *unique_root_dir; + /* prefix for lost mailbox */ + const char *lost_mailbox_prefix; + /* Last error set in mail_storage_set_critical(). */ char *last_internal_error; @@ -176,12 +182,17 @@ struct mail_storage { attributes. */ struct dict *_shared_attr_dict; + /* optional fs-api object for accessing mailboxes */ + struct fs *mailboxes_fs; + /* Module-specific contexts. See mail_storage_module_id. */ ARRAY(union mail_storage_module_context *) module_contexts; /* Failed to create shared attribute dict, don't try again */ bool shared_attr_dict_failed:1; bool last_error_is_internal:1; + bool rebuilding_list_index:1; + bool rebuild_list_index:1; }; struct mail_attachment_part { diff --git a/src/lib-storage/mail-storage.c b/src/lib-storage/mail-storage.c index df1f59a4c6..d7923b265e 100644 --- a/src/lib-storage/mail-storage.c +++ b/src/lib-storage/mail-storage.c @@ -417,6 +417,8 @@ int mail_storage_create_full(struct mail_namespace *ns, const char *driver, } storage = storage_class->v.alloc(); + if (storage->lost_mailbox_prefix == NULL) + storage->lost_mailbox_prefix = MAIL_STORAGE_LOST_MAILBOX_PREFIX; storage->refcount = 1; storage->storage_class = storage_class; storage->user = ns->user;