Mercurial > dovecot > core-2.2
changeset 20293:b5a75b3c5c5c
lib-storage: Fixed error handling in list=children checking
author | Timo Sirainen <timo.sirainen@dovecot.fi> |
---|---|
date | Sun, 05 Jun 2016 15:35:13 +0300 |
parents | a0c09e408ef9 |
children | 899b205e1e71 |
files | src/lib-storage/list/mailbox-list-iter.c |
diffstat | 1 files changed, 17 insertions(+), 12 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib-storage/list/mailbox-list-iter.c Sun Jun 05 15:32:09 2016 +0300 +++ b/src/lib-storage/list/mailbox-list-iter.c Sun Jun 05 15:35:13 2016 +0300 @@ -354,33 +354,38 @@ return ret; } -static bool +static int ns_prefix_is_visible(struct ns_list_iterate_context *ctx, struct mail_namespace *ns) { + int ret; + if ((ns->flags & NAMESPACE_FLAG_LIST_PREFIX) != 0) - return TRUE; + return 1; if ((ns->flags & NAMESPACE_FLAG_LIST_CHILDREN) != 0) { - if (mailbox_list_match_anything(ctx, ns, ns->prefix)) - return TRUE; + if ((ret = mailbox_list_match_anything(ctx, ns, ns->prefix)) != 0) + return ret; } - return FALSE; + return 0; } -static bool +static int ns_prefix_has_visible_child_namespace(struct ns_list_iterate_context *ctx, const char *prefix) { struct mail_namespace *ns; unsigned int prefix_len = strlen(prefix); + int ret; for (ns = ctx->namespaces; ns != NULL; ns = ns->next) { if (ns->prefix_len > prefix_len && - strncmp(ns->prefix, prefix, prefix_len) == 0 && - ns_prefix_is_visible(ctx, ns)) - return TRUE; + strncmp(ns->prefix, prefix, prefix_len) == 0) { + ret = ns_prefix_is_visible(ctx, ns); + if (ret != 0) + return ret; + } } - return FALSE; + return 0; } static bool @@ -410,8 +415,8 @@ const char *pattern; int ret; - if (ns_prefix_has_visible_child_namespace(ctx, prefix)) - return 1; + if ((ret = ns_prefix_has_visible_child_namespace(ctx, prefix)) != 0) + return ret; pattern = t_strconcat(prefix, "%", NULL); list_iter = mailbox_list_iter_init(ns->list, pattern, list_flags);