changeset 22194:129d80313246

imapc: If mailbox iteration fails, make sure error message isn't lost.
author Timo Sirainen <timo.sirainen@dovecot.fi>
date Mon, 12 Jun 2017 14:35:22 +0300
parents 33222df76027
children c2a33eba3615
files src/lib-storage/index/imapc/imapc-list.c
diffstat 1 files changed, 5 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib-storage/index/imapc/imapc-list.c	Mon Jun 12 14:33:46 2017 +0300
+++ b/src/lib-storage/index/imapc/imapc-list.c	Mon Jun 12 14:35:22 2017 +0300
@@ -648,7 +648,9 @@
 		return _ctx;
 	}
 
-	ns_sep = mail_namespace_get_sep(_list->ns);
+	/* if we've already failed, make sure we don't call
+	   mailbox_list_get_hierarchy_sep(), since it clears the error */
+	ns_sep = ret < 0 ? '/' : mail_namespace_get_sep(_list->ns);
 
 	pool = pool_alloconly_create("mailbox list imapc iter", 1024);
 	ctx = p_new(pool, struct imapc_mailbox_list_iterate_context, 1);
@@ -662,7 +664,8 @@
 
 	ctx->tree = mailbox_tree_init(ns_sep);
 	mailbox_tree_set_parents_nonexistent(ctx->tree);
-	imapc_list_build_match_tree(ctx);
+	if (ret == 0)
+		imapc_list_build_match_tree(ctx);
 
 	if (list->list.ns->prefix_len > 0) {
 		ns_root_name = t_strndup(_list->ns->prefix,