Mercurial > dovecot > original-hg > dovecot-1.2
changeset 8836:dc6880dcbbba HEAD
FETCH n BODY.PEEK[HEADER.FIELDS[.NOT] (...)] returned BAD.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Wed, 18 Mar 2009 13:59:58 -0400 |
parents | 299e30db1ee9 |
children | c9d6ae6f10fe |
files | src/imap/cmd-fetch.c |
diffstat | 1 files changed, 8 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/src/imap/cmd-fetch.c Wed Mar 18 13:47:58 2009 -0400 +++ b/src/imap/cmd-fetch.c Wed Mar 18 13:59:58 2009 -0400 @@ -21,7 +21,8 @@ }; static bool -fetch_parse_args(struct imap_fetch_context *ctx, const struct imap_arg *arg) +fetch_parse_args(struct imap_fetch_context *ctx, const struct imap_arg *arg, + const struct imap_arg **next_arg_r) { const char *str, *const *macro; @@ -52,7 +53,9 @@ macro++; } } + *next_arg_r = arg; } else { + *next_arg_r = arg + 1; arg = IMAP_ARG_LIST_ARGS(arg); while (arg->type == IMAP_ARG_ATOM) { str = t_str_ucase(IMAP_ARG_STR(arg)); @@ -180,7 +183,7 @@ { struct client *client = cmd->client; struct imap_fetch_context *ctx; - const struct imap_arg *args; + const struct imap_arg *args, *next_arg; struct mail_search_args *search_args; const char *messageset; int ret; @@ -213,9 +216,9 @@ } ctx->search_args = search_args; - if (!fetch_parse_args(ctx, &args[1]) || - (args[2].type == IMAP_ARG_LIST && - !fetch_parse_modifiers(ctx, IMAP_ARG_LIST_ARGS(&args[2])))) { + if (!fetch_parse_args(ctx, &args[1], &next_arg) || + (next_arg->type == IMAP_ARG_LIST && + !fetch_parse_modifiers(ctx, IMAP_ARG_LIST_ARGS(next_arg)))) { imap_fetch_deinit(ctx); return TRUE; }