client/server: zlib error code fixup
authorJens Axboe <axboe@kernel.dk>
Wed, 14 Mar 2012 20:53:00 +0000 (21:53 +0100)
committerJens Axboe <axboe@kernel.dk>
Wed, 14 Mar 2012 20:53:00 +0000 (21:53 +0100)
Signed-off-by: Jens Axboe <axboe@kernel.dk>
client.c
server.c

index f7b050b0253dc2a644898326cce6e50ab4658063..678a62753021035568cec1fb54ac1f23e8d7bcca 100644 (file)
--- a/client.c
+++ b/client.c
@@ -1000,7 +1000,8 @@ static struct cmd_iolog_pdu *convert_iolog(struct fio_net_cmd *cmd)
                stream.avail_out = this_chunk;
                stream.next_out = p;
                err = inflate(&stream, Z_NO_FLUSH);
                stream.avail_out = this_chunk;
                stream.next_out = p;
                err = inflate(&stream, Z_NO_FLUSH);
-               if (err != Z_OK) {
+               /* may be Z_OK, or Z_STREAM_END */
+               if (err < 0) {
                        log_err("fio: inflate error %d\n", err);
                        free(ret);
                        ret = NULL;
                        log_err("fio: inflate error %d\n", err);
                        free(ret);
                        ret = NULL;
index 2da0c83edf2e75f1b4090bf574c6985eb68336d6..7ab01efadbe491c9d07f5a0908168151fb89998b 100644 (file)
--- a/server.c
+++ b/server.c
@@ -955,7 +955,10 @@ int fio_send_iolog(struct thread_data *td, struct io_log *log, const char *name)
 
                stream.avail_out = FIO_SERVER_MAX_FRAGMENT_PDU;
                stream.next_out = out_pdu;
 
                stream.avail_out = FIO_SERVER_MAX_FRAGMENT_PDU;
                stream.next_out = out_pdu;
-               assert(deflate(&stream, Z_FINISH) == Z_OK);
+               ret = deflate(&stream, Z_FINISH);
+               /* may be Z_OK, or Z_STREAM_END */
+               if (ret < 0)
+                       goto err_zlib;
 
                this_len = FIO_SERVER_MAX_FRAGMENT_PDU - stream.avail_out;
 
 
                this_len = FIO_SERVER_MAX_FRAGMENT_PDU - stream.avail_out;