dovecot-1.1: ACL: If a subscribed mailbox doesn't have list righ...

dovecot at dovecot.org dovecot at dovecot.org
Fri Oct 31 17:45:15 EET 2008


details:   http://hg.dovecot.org/dovecot-1.1/rev/9f46dff926c0
changeset: 7991:9f46dff926c0
user:      Timo Sirainen <tss at iki.fi>
date:      Fri Oct 31 17:45:11 2008 +0200
description:
ACL: If a subscribed mailbox doesn't have list right, show it as non-existing.

diffstat:

1 file changed, 8 insertions(+), 12 deletions(-)
src/plugins/acl/acl-mailbox-list.c |   20 ++++++++------------

diffs (53 lines):

diff -r 46aac86f6c4a -r 9f46dff926c0 src/plugins/acl/acl-mailbox-list.c
--- a/src/plugins/acl/acl-mailbox-list.c	Thu Oct 30 17:40:46 2008 +0200
+++ b/src/plugins/acl/acl-mailbox-list.c	Fri Oct 31 17:45:11 2008 +0200
@@ -177,9 +177,9 @@ acl_mailbox_list_iter_get_name(struct ma
 }
 
 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 @@ acl_mailbox_list_info_is_visible(struct 
 		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 @@ acl_mailbox_list_iter_next(struct mailbo
 	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 @@ acl_mailbox_list_iter_next(struct mailbo
 		}
 		/* skip to next one */
 	}
-	return info;
+	return &ctx->info;
 }
 
 static int


More information about the dovecot-cvs mailing list