changeset 2581:b88b34d95c7b HEAD

Seeking was broken if header hadn't been read yet.
author Timo Sirainen <tss@iki.fi>
date Fri, 10 Sep 2004 14:44:07 +0300
parents a86d97c69e8f
children 39d944735147
files src/lib-mail/istream-header-filter.c
diffstat 1 files changed, 9 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib-mail/istream-header-filter.c	Fri Sep 10 14:25:33 2004 +0300
+++ b/src/lib-mail/istream-header-filter.c	Fri Sep 10 14:44:07 2004 +0300
@@ -235,6 +235,7 @@
 {
 	struct header_filter_istream *mstream =
 		(struct header_filter_istream *)stream;
+	size_t pos;
 
 	stream->istream.v_offset = v_offset;
 	stream->skip = stream->pos = 0;
@@ -245,6 +246,14 @@
 		mstream->hdr_ctx = NULL;
 	}
 
+	while (!mstream->header_read) {
+		if (_read(stream) == -1)
+			break;
+
+		(void)i_stream_get_data(&stream->istream, &pos);
+		i_stream_skip(&stream->istream, pos);
+	}
+
 	if (v_offset < mstream->header_size.virtual_size) {
 		/* seek into headers. we'll have to re-parse them, use
 		   skip_count to set the wanted position */