]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
LAYOUT=fs: List INBOX as \NoInferiors when necessary
authorTimo Sirainen <timo.sirainen@dovecot.fi>
Wed, 13 Dec 2017 23:34:25 +0000 (01:34 +0200)
committerTimo Sirainen <timo.sirainen@dovecot.fi>
Thu, 14 Dec 2017 19:04:15 +0000 (21:04 +0200)
src/lib-storage/list/mailbox-list-fs-iter.c

index d2d8c63e0e05c1a55edf4b21d32d76395c515b63..e2b4a8a4632f82acd2a45fb2a9f7b76754b97411 100644 (file)
@@ -567,6 +567,10 @@ static void inbox_flags_set(struct fs_list_iterate_context *ctx,
        /* INBOX is always selectable */
        ctx->info.flags &= ~(MAILBOX_NOSELECT | MAILBOX_NONEXISTENT);
 
+       if (mail_namespace_is_inbox_noinferiors(ctx->info.ns)) {
+               ctx->info.flags &= ~(MAILBOX_CHILDREN|MAILBOX_NOCHILDREN);
+               ctx->info.flags |= MAILBOX_NOINFERIORS;
+       }
        if (*ns->prefix != '\0' &&
            (ns->flags & NAMESPACE_FLAG_INBOX_USER) != 0) {
                /* we're listing INBOX for a namespace with a prefix.
@@ -584,9 +588,6 @@ static void inbox_flags_set(struct fs_list_iterate_context *ctx,
                           INBOX. we're now doing a LIST INBOX/%, so we'll need
                           to create a fake \NoSelect INBOX/INBOX */
                        ctx->list_inbox_inbox = TRUE;
-               } else {
-                       ctx->info.flags &= ~MAILBOX_CHILDREN;
-                       ctx->info.flags |= MAILBOX_NOINFERIORS;
                }
        }
 }