struct mail_namespace *ns,
const char *prefix);
+static struct mailbox_list_iterate_context mailbox_list_iter_failed;
+
struct mailbox_list_iterate_context *
mailbox_list_iter_init(struct mailbox_list *list, const char *pattern,
enum mailbox_list_iter_flags flags)
i_assert(*patterns != NULL);
if ((flags & (MAILBOX_LIST_ITER_SELECT_SUBSCRIBED |
- MAILBOX_LIST_ITER_RETURN_SUBSCRIBED)) != 0)
+ MAILBOX_LIST_ITER_RETURN_SUBSCRIBED)) != 0) {
ret = mailbox_list_iter_subscriptions_refresh(list);
+ if (ret < 0)
+ return &mailbox_list_iter_failed;
+ }
ctx = list->v.iter_init(list, patterns, flags);
if (ret < 0)
{
const struct mailbox_info *info;
+ if (ctx == &mailbox_list_iter_failed)
+ return NULL;
do {
T_BEGIN {
if (ctx->autocreate_ctx != NULL)
*_ctx = NULL;
+ if (ctx == &mailbox_list_iter_failed)
+ return -1;
return ctx->list->v.iter_deinit(ctx);
}