Mercurial > dovecot > original-hg > dovecot-1.2
changeset 8361:692aac54ae1c HEAD
ACL: If a subscribed mailbox doesn't have list right, show it as non-existing.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Fri, 31 Oct 2008 17:44:54 +0200 |
parents | 7c615ac48711 |
children | ca4e277a6615 |
files | src/plugins/acl/acl-mailbox-list.c |
diffstat | 1 files changed, 7 insertions(+), 11 deletions(-) [+] |
line wrap: on
line diff
--- a/src/plugins/acl/acl-mailbox-list.c Thu Oct 30 17:41:02 2008 +0200 +++ b/src/plugins/acl/acl-mailbox-list.c Fri Oct 31 17:44:54 2008 +0200 @@ -177,9 +177,9 @@ } static int -acl_mailbox_list_info_is_visible(struct acl_mailbox_list_iterate_context *ctx, - const struct mailbox_info *info) +acl_mailbox_list_info_is_visible(struct acl_mailbox_list_iterate_context *ctx) { + struct mailbox_info *info = &ctx->info; const char *acl_name; int ret; @@ -196,14 +196,9 @@ return ret; /* no permission to see this mailbox */ - if ((ctx->info.flags & MAILBOX_SUBSCRIBED) != 0) { + if ((info->flags & MAILBOX_SUBSCRIBED) != 0) { /* it's subscribed, show it as non-existent */ - if (info != &ctx->info) { - ctx->info = *info; - info = &ctx->info; - } - ctx->info.flags = MAILBOX_NONEXISTENT | - MAILBOX_SUBSCRIBED; + info->flags = MAILBOX_NONEXISTENT | MAILBOX_SUBSCRIBED; return 1; } return 0; @@ -218,8 +213,9 @@ int ret; while ((info = acl_mailbox_list_iter_next_info(ctx)) != NULL) { + ctx->info = *info; T_BEGIN { - ret = acl_mailbox_list_info_is_visible(ctx, info); + ret = acl_mailbox_list_info_is_visible(ctx); } T_END; if (ret > 0) break; @@ -229,7 +225,7 @@ } /* skip to next one */ } - return info; + return &ctx->info; } static int