Mercurial > dovecot > original-hg > dovecot-1.2
changeset 1291:ddb4ebbf32a9 HEAD
mbox: LIST "" invalid-directory/% doesn't anymore give internal error
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Sun, 09 Mar 2003 12:03:35 +0200 |
parents | 9562ba6af1f1 |
children | 359334706e65 |
files | src/lib-storage/index/mbox/mbox-list.c |
diffstat | 1 files changed, 13 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib-storage/index/mbox/mbox-list.c Sun Mar 09 11:56:05 2003 +0200 +++ b/src/lib-storage/index/mbox/mbox-list.c Sun Mar 09 12:03:35 2003 +0200 @@ -72,8 +72,9 @@ if (*dirp != NULL) return 1; - if (!root && (errno == ENOENT || errno == ENOTDIR)) { - /* probably just race condition with other client + if (errno == ENOENT || errno == ENOTDIR) { + /* root) user gave invalid hiearchy, ignore + sub) probably just race condition with other client deleting the mailbox. */ return 0; } @@ -128,9 +129,11 @@ virtual_path = mask_get_dir(mask); path = mbox_get_path(storage, virtual_path); - if (list_opendir(storage, path, TRUE, &dirp) <= 0) + if (list_opendir(storage, path, TRUE, &dirp) < 0) return NULL; + /* if user gave invalid directory, we just don't show any results. */ + ctx = i_new(struct mailbox_list_context, 1); ctx->storage = storage; ctx->flags = flags; @@ -139,15 +142,17 @@ if (virtual_path == NULL && imap_match(ctx->glob, "INBOX") > 0) ctx->next = mbox_list_inbox; - else if (virtual_path != NULL) + else if (virtual_path != NULL && dirp != NULL) ctx->next = mbox_list_path; else ctx->next = mbox_list_next; - ctx->dir = i_new(struct list_dir_context, 1); - ctx->dir->dirp = dirp; - ctx->dir->real_path = i_strdup(path); - ctx->dir->virtual_path = i_strdup(virtual_path); + if (dirp != NULL) { + ctx->dir = i_new(struct list_dir_context, 1); + ctx->dir->dirp = dirp; + ctx->dir->real_path = i_strdup(path); + ctx->dir->virtual_path = i_strdup(virtual_path); + } return ctx; }