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.2.34~177 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=eb044c7cd749d2d203e68b610b10dd1f4b998f6b;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 3dd2d692cc..c28e8f4209 100644 --- a/src/lib-storage/list/mailbox-list-index-sync.c +++ b/src/lib-storage/list/mailbox-list-index-sync.c @@ -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;