From: Timo Sirainen Date: Sun, 4 Apr 2010 23:56:31 +0000 (+0300) Subject: lib-storage: MAILBOX_LIST_ITER_NO_AUTO_INBOX flag didn't work correctly. X-Git-Tag: 2.0.beta5~221 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=a7b2b1b827c121348da0549e85a9d37987034c1b;p=thirdparty%2Fdovecot%2Fcore.git lib-storage: MAILBOX_LIST_ITER_NO_AUTO_INBOX flag didn't work correctly. --HG-- branch : HEAD --- diff --git a/src/lib-storage/list/mailbox-list-fs-iter.c b/src/lib-storage/list/mailbox-list-fs-iter.c index c26034916d..7101fc56d4 100644 --- a/src/lib-storage/list/mailbox-list-fs-iter.c +++ b/src/lib-storage/list/mailbox-list-fs-iter.c @@ -413,6 +413,10 @@ static struct mailbox_info *fs_list_inbox(struct fs_list_iterate_context *ctx) if (mailbox_list_mailbox(ctx->ctx.list, "INBOX", &ctx->info.flags) < 0) ctx->ctx.failed = TRUE; + if ((ctx->ctx.flags & MAILBOX_LIST_ITER_NO_AUTO_INBOX) != 0 && + (ctx->info.flags & MAILBOX_NONEXISTENT) != 0) + return NULL; + ctx->info.flags |= fs_list_get_subscription_flags(ctx, "INBOX"); inbox_flags_set(ctx); /* we got here because we didn't see INBOX among other mailboxes, @@ -762,7 +766,6 @@ fs_list_next(struct fs_list_iterate_context *ctx) } if (!ctx->inbox_found && - (ctx->ctx.flags & MAILBOX_LIST_ITER_NO_AUTO_INBOX) == 0 && (ctx->ctx.list->ns->flags & NAMESPACE_FLAG_INBOX) != 0 && ((ctx->glob != NULL && imap_match(ctx->glob, "INBOX") == IMAP_MATCH_YES) || diff --git a/src/lib-storage/list/mailbox-list-maildir-iter.c b/src/lib-storage/list/mailbox-list-maildir-iter.c index f6fd393137..0463a6af24 100644 --- a/src/lib-storage/list/mailbox-list-maildir-iter.c +++ b/src/lib-storage/list/mailbox-list-maildir-iter.c @@ -124,7 +124,6 @@ maildir_fill_inbox(struct maildir_list_iterate_context *ctx, struct imap_match_glob *glob, bool update_only) { - const struct mailbox_list_settings *set = &ctx->ctx.list->set; struct mailbox_node *node; enum mailbox_info_flags flags; enum imap_match_result match; @@ -133,17 +132,13 @@ maildir_fill_inbox(struct maildir_list_iterate_context *ctx, if ((ctx->ctx.flags & MAILBOX_LIST_ITER_NO_AUTO_INBOX) == 0) { /* always show INBOX */ - } else if (set->inbox_path != NULL && - strcmp(set->inbox_path, set->root_dir) != 0) { - /* INBOX doesn't exist, since it wasn't listed */ - update_only = TRUE; } else { - /* INBOX is in Maildir root. show it only if it has already - been created */ + /* INBOX may be Maildir root or completely elsewhere. + show it only if it has already been created */ ret = mailbox_list_mailbox(ctx->ctx.list, "INBOX", &flags); if (ret < 0) return -1; - if (ret == 0) + if ((flags & MAILBOX_NONEXISTENT) != 0) update_only = TRUE; }