]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-storage: LAYOUT=index rebuild - Fix detecting duplicate mailbox GUIDs in index
authorAki Tuomi <aki.tuomi@open-xchange.com>
Wed, 5 Oct 2022 12:42:25 +0000 (15:42 +0300)
committerMarkus Valentin <markus.valentin@open-xchange.com>
Thu, 20 Oct 2022 08:55:33 +0000 (10:55 +0200)
Otherwise duplicate folders are not properly cleared out.

Broken in 2fc8d7024bb161aab08031b8212a736301844858

src/lib-storage/list/mail-storage-list-index-rebuild.c

index 7fa47411168e842353da254da306d2657c82994c..0526be8c75b62284d55768409498d491a93c2f5b 100644 (file)
@@ -265,6 +265,13 @@ mail_storage_list_index_find_indexed_mailbox(struct mail_storage_list_index_rebu
                        e_debug(box->event,
                                "Mailbox GUID %s exists in list index, but not in storage",
                                guid_128_to_string(metadata.guid));
+                       /* Add it there so we can delete the duplicate */
+                       char *hk_dup = p_strdup(ctx->pool, hk);
+                       rebuild_box = p_new(ctx->pool, struct mail_storage_list_index_rebuild_mailbox, 1);
+                       rebuild_box->list = info->ns->list;
+                       rebuild_box->index_name = p_strdup(ctx->pool, box->name);
+                       guid_128_copy(rebuild_box->guid, metadata.guid);
+                       hash_table_insert(ctx->mailboxes, hk_dup, rebuild_box);
                } else if (rebuild_box->index_name == NULL) {
                        rebuild_box->index_name =
                                p_strdup(ctx->pool, box->name);