Mercurial > dovecot > original-hg > dovecot-1.2
changeset 6729:f323da4ef459 HEAD
If we're at EOF but we wanted more data, return what we have so far instead
of ignoring it.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Thu, 08 Nov 2007 03:40:55 +0200 |
parents | 79110f203734 |
children | 5f30b309a79e |
files | src/lib-mail/message-parser.c |
diffstat | 1 files changed, 6 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib-mail/message-parser.c Thu Nov 08 03:21:48 2007 +0200 +++ b/src/lib-mail/message-parser.c Thu Nov 08 03:40:55 2007 +0200 @@ -114,6 +114,10 @@ ret = i_stream_read_data(ctx->input, &block_r->data, &block_r->size, ctx->want_count); if (ret <= 0) { + if (ret == -1 && block_r->size != 0) { + /* EOF, but we still have some data. return it. */ + return 1; + } if (ret < 0) return ret; @@ -303,8 +307,7 @@ int ret; bool eof, full; - if ((ret = message_parser_read_more(ctx, block_r)) == 0 || - block_r->size == 0) + if ((ret = message_parser_read_more(ctx, block_r)) <= 0) return ret; eof = ret == -1; full = ret == -2; @@ -589,8 +592,7 @@ ctx->part->body_size.physical_size; int ret; - ret = message_parser_read_more(ctx, block_r); - if (ret <= 0) + if ((ret = message_parser_read_more(ctx, block_r)) <= 0) return ret; if (ctx->input->v_offset + block_r->size >= end_offset) {