acl-mailbox-list.c (dovecot-2.3.16) | : | acl-mailbox-list.c (dovecot-2.3.17) | ||
---|---|---|---|---|
skipping to change at line 224 | skipping to change at line 224 | |||
} | } | |||
static const struct mailbox_info * | static const struct mailbox_info * | |||
acl_mailbox_list_iter_next_info(struct mailbox_list_iterate_context *_ctx) | acl_mailbox_list_iter_next_info(struct mailbox_list_iterate_context *_ctx) | |||
{ | { | |||
struct acl_mailbox_list_iterate_context *ctx = | struct acl_mailbox_list_iterate_context *ctx = | |||
ACL_LIST_ITERATE_CONTEXT(_ctx); | ACL_LIST_ITERATE_CONTEXT(_ctx); | |||
struct acl_mailbox_list *alist = ACL_LIST_CONTEXT_REQUIRE(_ctx->list); | struct acl_mailbox_list *alist = ACL_LIST_CONTEXT_REQUIRE(_ctx->list); | |||
const struct mailbox_info *info; | const struct mailbox_info *info; | |||
while ((info = alist->module_ctx.super.iter_next(_ctx)) != NULL) { | for (;;) { | |||
/* Normally the data stack frame is in mailbox_list_iter_next(), | ||||
but we're bypassing it here by calling super.iter_next() | ||||
directly. */ | ||||
T_BEGIN { | ||||
info = alist->module_ctx.super.iter_next(_ctx); | ||||
} T_END; | ||||
if (info == NULL) | ||||
break; | ||||
/* if we've a list of mailboxes with LOOKUP rights, skip the | /* if we've a list of mailboxes with LOOKUP rights, skip the | |||
mailboxes not in the list (since we know they can't be | mailboxes not in the list (since we know they can't be | |||
visible to us). */ | visible to us). */ | |||
if (ctx->lookup_boxes == NULL || | if (ctx->lookup_boxes == NULL || | |||
mailbox_tree_lookup(ctx->lookup_boxes, info->vname) != NULL) | mailbox_tree_lookup(ctx->lookup_boxes, info->vname) != NULL) | |||
break; | break; | |||
e_debug(_ctx->list->ns->user->event, | e_debug(_ctx->list->ns->user->event, | |||
"acl: Mailbox not in dovecot-acl-list: %s", info->vname); | "acl: Mailbox not in dovecot-acl-list: %s", info->vname); | |||
} | } | |||
End of changes. 1 change blocks. | ||||
1 lines changed or deleted | 10 lines changed or added |