]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-storage: mailbox_list_index - Don't overwrite INBOX's flags with prefix/INBOX's
authorTimo Sirainen <timo.sirainen@dovecot.fi>
Thu, 14 Dec 2017 00:11:28 +0000 (02:11 +0200)
committerTimo Sirainen <timo.sirainen@dovecot.fi>
Thu, 14 Dec 2017 19:05:32 +0000 (21:05 +0200)
This made the real INBOX appear as if it was \NoSelect

src/lib-storage/list/mailbox-list-index-sync.c

index 3dd2d692ccfdde12916313e8f95f8b38455d552e..c28e8f420919a0739f8d7458963c8e9ae79b0e9c 100644 (file)
@@ -321,12 +321,18 @@ mailbox_list_index_sync_list(struct mailbox_list_index_sync_context *sync_ctx)
 
                const char *name = mailbox_list_get_storage_name(info->ns->list,
                                                                 info->vname);
-               seq = mailbox_list_index_sync_name(sync_ctx, name,
-                                                  &node, &created);
-
-               node->flags = flags | MAILBOX_LIST_INDEX_FLAG_SYNC_EXISTS;
-               mail_index_update_flags(sync_ctx->trans, seq,
-                                       MODIFY_REPLACE, (enum mail_flags)flags);
+               if (strcmp(name, "INBOX") == 0 &&
+                   strcmp(info->vname, "INBOX") != 0 &&
+                   (info->ns->flags & NAMESPACE_FLAG_INBOX_USER) != 0) {
+                       /* prefix/INBOX - don't override INBOX with this */
+               } else {
+                       seq = mailbox_list_index_sync_name(sync_ctx, name,
+                                                          &node, &created);
+                       node->flags = flags | MAILBOX_LIST_INDEX_FLAG_SYNC_EXISTS;
+                       mail_index_update_flags(sync_ctx->trans, seq,
+                                               MODIFY_REPLACE,
+                                               (enum mail_flags)flags);
+               }
        } T_END;
        sync_ctx->syncing_list = FALSE;