Mercurial > dovecot > core-2.2
changeset 18885:563b93302831
imapc: Don't return mailbox list entries that would result in name="".
So basically don't return namespace prefix if imapc_list_prefix="".
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Tue, 23 Jun 2015 11:30:27 +0200 |
parents | f06008be0d1d |
children | e6cb25855abf |
files | src/lib-storage/index/imapc/imapc-list.c |
diffstat | 1 files changed, 10 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib-storage/index/imapc/imapc-list.c Tue Jun 23 11:12:38 2015 +0200 +++ b/src/lib-storage/index/imapc/imapc-list.c Tue Jun 23 11:30:27 2015 +0200 @@ -679,6 +679,8 @@ { 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 @@ 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) {