]> 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 09:09:09 +0000 (11:09 +0200)
This made the real INBOX appear as if it was \NoSelect

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

index 858a8fe9d61e7aa899146991daf6c8fda6b842b8..a81db7ccf71cb9c34ca719ef855fea76ef36b50e 100644 (file)
@@ -322,12 +322,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;