Mercurial > dovecot > original-hg > dovecot-1.2
changeset 1014:26a028e6d7d5 HEAD
Externally parsed literal size always stops argument parsing now. Input
stream is now skipped when returning success/failure, so the stream can be
used for other purposes too.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Wed, 22 Jan 2003 20:41:29 +0200 |
parents | 3415ebfad8d2 |
children | 40a327d356de |
files | src/lib-imap/imap-parser.c |
diffstat | 1 files changed, 8 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib-imap/imap-parser.c Wed Jan 22 20:38:48 2003 +0200 +++ b/src/lib-imap/imap-parser.c Wed Jan 22 20:41:29 2003 +0200 @@ -325,7 +325,9 @@ static int imap_parser_literal_end(struct imap_parser *parser) { - if ((parser->flags & IMAP_PARSE_FLAG_LITERAL_SIZE) == 0) { + if ((parser->flags & IMAP_PARSE_FLAG_LITERAL_SIZE) != 0) + parser->eol = TRUE; + else { if (parser->literal_size > parser->max_literal_size) { /* too long string, abort. */ parser->error = "Literal size too large"; @@ -531,11 +533,16 @@ if (parser->error != NULL) { /* error, abort */ + i_stream_skip(parser->input, parser->cur_pos); + parser->cur_pos = 0; *args = NULL; return -1; } else if ((!IS_UNFINISHED(parser) && count > 0 && parser->root_list->size >= count) || parser->eol) { /* all arguments read / end of line. */ + i_stream_skip(parser->input, parser->cur_pos); + parser->cur_pos = 0; + if (parser->list_arg != NULL) { parser->error = "Missing ')'"; *args = NULL;