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