# HG changeset patch # User Timo Sirainen # Date 1225467894 -7200 # Node ID 692aac54ae1c596efa8c23b2abab11086129f7a5 # Parent 7c615ac487115ebfa039cb7c1e3181d99cc14422 ACL: If a subscribed mailbox doesn't have list right, show it as non-existing. diff -r 7c615ac48711 -r 692aac54ae1c src/plugins/acl/acl-mailbox-list.c --- 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