dovecot-2.2: lzma: Reading until EOF without seeing LZMA_STREAM_...
dovecot at dovecot.org
dovecot at dovecot.org
Thu Dec 12 16:37:49 EET 2013
details: http://hg.dovecot.org/dovecot-2.2/rev/fb157c79473e
changeset: 17059:fb157c79473e
user: Timo Sirainen <tss at iki.fi>
date: Thu Dec 12 16:37:37 2013 +0200
description:
lzma: Reading until EOF without seeing LZMA_STREAM_END isn't an error.
diffstat:
src/lib-compression/istream-lzma.c | 15 ++++++++++-----
1 files changed, 10 insertions(+), 5 deletions(-)
diffs (39 lines):
diff -r c0236d1c4a04 -r fb157c79473e src/lib-compression/istream-lzma.c
--- a/src/lib-compression/istream-lzma.c Wed Dec 11 19:39:12 2013 +0200
+++ b/src/lib-compression/istream-lzma.c Thu Dec 12 16:37:37 2013 +0200
@@ -49,6 +49,13 @@
i_error("%s", zstream->istream.iostream.error);
}
+static void lzma_stream_end(struct lzma_istream *zstream)
+{
+ zstream->eof_offset = zstream->istream.istream.v_offset +
+ (zstream->istream.pos - zstream->istream.skip);
+ zstream->stream_size = zstream->eof_offset;
+}
+
static ssize_t i_stream_lzma_read(struct istream_private *stream)
{
struct lzma_istream *zstream = (struct lzma_istream *)stream;
@@ -109,8 +116,8 @@
stream->parent->stream_errno;
} else {
i_assert(stream->parent->eof);
- lzma_read_error(zstream, "unexpected EOF");
- stream->istream.stream_errno = EINVAL;
+ lzma_stream_end(zstream);
+ stream->istream.eof = TRUE;
}
return -1;
}
@@ -153,9 +160,7 @@
i_fatal_status(FATAL_OUTOFMEM, "lzma.read(%s): Out of memory",
i_stream_get_name(&stream->istream));
case LZMA_STREAM_END:
- zstream->eof_offset = stream->istream.v_offset +
- (stream->pos - stream->skip);
- zstream->stream_size = zstream->eof_offset;
+ lzma_stream_end(zstream);
if (out_size == 0) {
stream->istream.eof = TRUE;
return -1;
More information about the dovecot-cvs
mailing list