dovecot-2.0: lib-storage: Fixed LIST/LSUB with LAYOUT=none.

dovecot at dovecot.org dovecot at dovecot.org
Mon May 9 17:58:44 EEST 2011


details:   http://hg.dovecot.org/dovecot-2.0/rev/78286b1a0a16
changeset: 12776:78286b1a0a16
user:      Timo Sirainen <tss at iki.fi>
date:      Mon May 09 17:58:37 2011 +0300
description:
lib-storage: Fixed LIST/LSUB with LAYOUT=none.
It shouldn't have listed INBOX if it didn't match the given patterns.

diffstat:

 src/lib-storage/list/mailbox-list-none.c |  15 +++++++++++----
 1 files changed, 11 insertions(+), 4 deletions(-)

diffs (41 lines):

diff -r 622d42376fe0 -r 78286b1a0a16 src/lib-storage/list/mailbox-list-none.c
--- a/src/lib-storage/list/mailbox-list-none.c	Mon May 09 17:41:45 2011 +0300
+++ b/src/lib-storage/list/mailbox-list-none.c	Mon May 09 17:58:37 2011 +0300
@@ -1,6 +1,7 @@
 /* Copyright (c) 2006-2011 Dovecot authors, see the included COPYING file */
 
 #include "lib.h"
+#include "imap-match.h"
 #include "mailbox-list-private.h"
 
 #define MAILBOX_LIST_NAME_NONE "none"
@@ -128,19 +129,25 @@
 
 static struct mailbox_list_iterate_context *
 none_list_iter_init(struct mailbox_list *list,
-		    const char *const *patterns ATTR_UNUSED,
+		    const char *const *patterns,
 		    enum mailbox_list_iter_flags flags)
 {
 	struct noop_list_iterate_context *ctx;
+	struct imap_match_glob *glob;
 
 	ctx = i_new(struct noop_list_iterate_context, 1);
 	ctx->ctx.list = list;
 	ctx->ctx.flags = flags;
-	if ((list->ns->flags & NAMESPACE_FLAG_INBOX_USER) != 0) {
-		ctx->list_inbox = TRUE;
+	if ((list->ns->flags & NAMESPACE_FLAG_INBOX_USER) != 0) T_BEGIN {
 		ctx->inbox_info.ns = list->ns;
 		ctx->inbox_info.name = "INBOX";
-	}
+
+		glob = imap_match_init_multiple(pool_datastack_create(),
+						patterns, TRUE,
+						list->hierarchy_sep);
+		if (imap_match(glob, "INBOX") == IMAP_MATCH_YES)
+			ctx->list_inbox = TRUE;
+	} T_END;
 	return &ctx->ctx;
 }
 


More information about the dovecot-cvs mailing list