content_encoding: fix inflate_stream for no bytes available
authorJay Satiro <raysatiro@yahoo.com>
Tue, 7 Nov 2017 05:46:59 +0000 (00:46 -0500)
committerJay Satiro <raysatiro@yahoo.com>
Thu, 9 Nov 2017 06:36:50 +0000 (01:36 -0500)
commitfa64b0fc4bb8e25fd831db8b9328eeec5cc209c1
treeaaeb3ccabd84d3f43f5bf1a98add42e4c2b7389e
parent19e66e53629de4e320a0ceafef687a861ec22fab
content_encoding: fix inflate_stream for no bytes available

- Don't call zlib's inflate() when avail_in stream bytes is 0.

This is a follow up to the parent commit 19e66e5. Prior to that change
libcurl's inflate_stream could call zlib's inflate even when no bytes
were available, causing inflate to return Z_BUF_ERROR, and then
inflate_stream would treat that as a hard error and return
CURLE_BAD_CONTENT_ENCODING.

According to the zlib FAQ, Z_BUF_ERROR is not fatal.

This bug would happen randomly since packet sizes are arbitrary. A test
of 10,000 transfers had 55 fail (ie 0.55%).

Ref: https://zlib.net/zlib_faq.html#faq05

Closes https://github.com/curl/curl/pull/2060
lib/content_encoding.c