From: Timo Sirainen Date: Mon, 12 Jun 2017 11:35:22 +0000 (+0300) Subject: imapc: If mailbox iteration fails, make sure error message isn't lost. X-Git-Tag: 2.2.31.rc1~65 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=70cca5798b60f99477cf40eae3fbd200584da466;p=thirdparty%2Fdovecot%2Fcore.git imapc: If mailbox iteration fails, make sure error message isn't lost. --- diff --git a/src/lib-storage/index/imapc/imapc-list.c b/src/lib-storage/index/imapc/imapc-list.c index 0d0727a11f..16fca00699 100644 --- a/src/lib-storage/index/imapc/imapc-list.c +++ b/src/lib-storage/index/imapc/imapc-list.c @@ -648,7 +648,9 @@ imapc_list_iter_init(struct mailbox_list *_list, const char *const *patterns, 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 @@ imapc_list_iter_init(struct mailbox_list *_list, const char *const *patterns, 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,