changeset 22712:4914c8247de7

lib-storage: mailbox_list_index - Don't overwrite INBOX's flags with prefix/INBOX's This made the real INBOX appear as if it was \NoSelect
author Timo Sirainen <timo.sirainen@dovecot.fi>
date Thu, 14 Dec 2017 02:11:28 +0200
parents 25d4771ad0fd
children cb108f786fb4
files src/lib-storage/list/mailbox-list-index-sync.c
diffstat 1 files changed, 12 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib-storage/list/mailbox-list-index-sync.c	Thu Dec 14 02:10:27 2017 +0200
+++ b/src/lib-storage/list/mailbox-list-index-sync.c	Thu Dec 14 02:11:28 2017 +0200
@@ -321,12 +321,18 @@
 
 		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;