]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
zlib: Fixed zlib/bzlib ostream flushing to report correctly when it's finished.
authorTimo Sirainen <tss@iki.fi>
Thu, 29 Apr 2010 17:14:43 +0000 (20:14 +0300)
committerTimo Sirainen <tss@iki.fi>
Thu, 29 Apr 2010 17:14:43 +0000 (20:14 +0300)
This caused imap-zlib plugin to eat all CPU when stream compression was used.
Patch by Apple.

--HG--
branch : HEAD

src/plugins/zlib/ostream-bzlib.c
src/plugins/zlib/ostream-zlib.c

index ccbcb3ebc5c6329cb87dc88fc2312bb2173760ec..ad0d41dc7b3fcf48f326c9652ea3a7692947b607 100644 (file)
@@ -122,15 +122,15 @@ static int o_stream_bzlib_send_flush(struct bzlib_ostream *zstream)
 static int o_stream_bzlib_flush(struct ostream_private *stream)
 {
        struct bzlib_ostream *zstream = (struct bzlib_ostream *)stream;
+       int ret;
 
        if (o_stream_bzlib_send_flush(zstream) < 0)
                return -1;
 
-       if (o_stream_flush(zstream->output) < 0) {
+       ret = o_stream_flush(zstream->output);
+       if (ret < 0)
                zstream_copy_error(zstream);
-               return -1;
-       }
-       return 0;
+       return ret;
 }
 
 static ssize_t
index 6e5d83b472899bae84a8cd1962d40ad6cef026f9..750e852d1632c2bbb283e5656855106da8718602 100644 (file)
@@ -184,15 +184,15 @@ static int o_stream_zlib_send_flush(struct zlib_ostream *zstream)
 static int o_stream_zlib_flush(struct ostream_private *stream)
 {
        struct zlib_ostream *zstream = (struct zlib_ostream *)stream;
+       int ret;
 
        if (o_stream_zlib_send_flush(zstream) < 0)
                return -1;
 
-       if (o_stream_flush(zstream->output) < 0) {
+       ret = o_stream_flush(zstream->output);
+       if (ret < 0)
                zstream_copy_error(zstream);
-               return -1;
-       }
-       return 0;
+       return ret;
 }
 
 static ssize_t