From c9b8cefc298d97ecba67def56a375c91485cd92f Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Sat, 14 Feb 2015 13:30:14 +0100 Subject: [PATCH] handle clean shutdown of zlib stream the server can actually close the zlib stream before closing the socket, so we need to accept it. we don't do anything beyond that - the actual EOF will be signaled by the socket, and if the server (erroneously) sends more data, zlib will tell us about it. REFMAIL: 1423048708-975-1-git-send-email-alex.bennee@linaro.org --- src/socket.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/socket.c b/src/socket.c index b376d73..3c4a3cd 100644 --- a/src/socket.c +++ b/src/socket.c @@ -597,7 +597,7 @@ static void socket_fill_z( conn_t *sock ) { char *buf; - int len; + int len, ret; if (prepare_read( sock, &buf, &len ) < 0) return; @@ -605,7 +605,8 @@ socket_fill_z( conn_t *sock ) sock->in_z->avail_out = len; sock->in_z->next_out = (unsigned char *)buf; - if (inflate( sock->in_z, Z_SYNC_FLUSH ) != Z_OK) { + ret = inflate( sock->in_z, Z_SYNC_FLUSH ); + if (ret != Z_OK && ret != Z_STREAM_END) { error( "Error decompressing data from %s: %s\n", sock->name, sock->in_z->msg ); socket_fail( sock ); return;