Mercurial > dovecot > original-hg > dovecot-1.2
changeset 2997:c64674a0a92a HEAD
In some cases we may have crashed if header didn't end with LF+LF.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Sun, 19 Dec 2004 09:04:14 +0200 |
parents | 9219e788d774 |
children | 7e1fdbdaf465 |
files | src/lib-storage/index/mbox/istream-raw-mbox.c |
diffstat | 1 files changed, 6 insertions(+), 12 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib-storage/index/mbox/istream-raw-mbox.c Sun Dec 19 08:36:12 2004 +0200 +++ b/src/lib-storage/index/mbox/istream-raw-mbox.c Sun Dec 19 09:04:14 2004 +0200 @@ -101,11 +101,12 @@ rstream->mail_size = rstream->istream.istream.v_offset + pos - rstream->hdr_offset; - if (rstream->body_offset != (uoff_t)-1 && - rstream->hdr_offset + rstream->mail_size < rstream->body_offset) { - /* "headers\n\nFrom ..", the second \n belongs to next + if (rstream->hdr_offset + rstream->mail_size < rstream->body_offset) { + /* a) Header didn't have ending \n + b) "headers\n\nFrom ..", the second \n belongs to next message which we didn't know at the time yet. */ - i_assert(rstream->body_offset == + i_assert(rstream->body_offset == (uoff_t)-1 || + rstream->body_offset == rstream->hdr_offset + rstream->mail_size + 1); rstream->body_offset = rstream->hdr_offset + rstream->mail_size; @@ -126,15 +127,8 @@ i_assert(stream->istream.v_offset >= rstream->from_offset); - if (stream->istream.eof) { - if (rstream->body_offset == (uoff_t)-1) { - /* missing \n from headers */ - rstream->body_offset = - stream->istream.v_offset + - (stream->pos - stream->skip); - } + if (stream->istream.eof) return -1; - } i_stream_seek(rstream->input, stream->istream.v_offset);