From: Timo Sirainen Date: Thu, 14 Dec 2017 00:11:28 +0000 (+0200) Subject: lib-storage: mailbox_list_index - Don't overwrite INBOX's flags with prefix/INBOX's X-Git-Tag: 2.3.0.rc1~44 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=75aaa1aba3a677293c79559f51ee24035bfd9862;p=thirdparty%2Fdovecot%2Fcore.git 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 --- diff --git a/src/lib-storage/list/mailbox-list-index-sync.c b/src/lib-storage/list/mailbox-list-index-sync.c index 858a8fe9d6..a81db7ccf7 100644 --- a/src/lib-storage/list/mailbox-list-index-sync.c +++ b/src/lib-storage/list/mailbox-list-index-sync.c @@ -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;