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
This commit is contained in:
Oswald Buddenhagen 2015-02-14 13:30:14 +01:00
parent ef70bd4a40
commit c9b8cefc29

View File

@ -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;