]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
imapc: Don't return mailbox list entries that would result in name="".
authorTimo Sirainen <tss@iki.fi>
Tue, 23 Jun 2015 09:30:27 +0000 (11:30 +0200)
committerTimo Sirainen <tss@iki.fi>
Tue, 23 Jun 2015 09:30:27 +0000 (11:30 +0200)
So basically don't return namespace prefix if imapc_list_prefix="".

src/lib-storage/index/imapc/imapc-list.c

index ceb10de12a1c850451cef16ac92d4ccf885db68a..e6ac45d58922dea7674c61b8a38aed89fe537bd7 100644 (file)
@@ -679,6 +679,8 @@ imapc_list_iter_next(struct mailbox_list_iterate_context *_ctx)
 {
        struct imapc_mailbox_list_iterate_context *ctx =
                (struct imapc_mailbox_list_iterate_context *)_ctx;
+       struct imapc_mailbox_list *list =
+               (struct imapc_mailbox_list *)_ctx->list;
        struct mailbox_node *node;
        const char *vname;
 
@@ -694,6 +696,14 @@ imapc_list_iter_next(struct mailbox_list_iterate_context *_ctx)
                        return NULL;
        } while ((node->flags & MAILBOX_MATCHED) == 0);
 
+       if (ctx->info.ns->prefix > 0 &&
+           strncmp(vname, ctx->info.ns->prefix, ctx->info.ns->prefix_len-1) == 0 &&
+           vname[ctx->info.ns->prefix_len] == '\0' &&
+           list->set->imapc_list_prefix[0] == '\0') {
+               /* don't return "" name */
+               return imapc_list_iter_next(_ctx);
+       }
+
        ctx->info.vname = vname;
        ctx->info.flags = node->flags;
        if ((_ctx->list->ns->flags & NAMESPACE_FLAG_INBOX_USER) != 0) {