RFR JDK-8191918: tomcat gzip-compressed response bodies appear to be broken in update 151

Paul Sandoz paul.sandoz at oracle.com
Fri Dec 1 23:40:55 UTC 2017



> On 30 Nov 2017, at 14:46, Xueming Shen <xueming.shen at oracle.com> wrote:
> 
> Hi,
> 
> Please help review the change for  JDK-8191918:
> 
> issue: https://bugs.openjdk.java.net/browse/JDK-8191918
> webrev: http://cr.openjdk.java.net/~sherman/8191918/webrev
> 

InflateIn_DeflateOut.java
—

 174         GZIPInputStream gzis = new GZIPInputStream(byteInStream);
 175         ByteArrayOutputStream baos = new ByteArrayOutputStream();
 176         int numRead;
 177         byte[] b = new byte[4 * 1024];
 178         try {
 179             while ((numRead = gzis.read(buf)) >= 0) {
 180                 baos.write(b, 0, numRead);
 181             }
 182         } finally {
 183             baos.close();
 184         }

Can you use gzis.transferTo(baos)?

Paul.

> This is the backport/identical change we have already putback into earlier update
> releases for JDK-8189789. It includes two changes
> 
> (1) to replace the change we put into jdk9 for #8184306 with the "official"
> change currently in zlib github repo (https://github.com/madler/zlib/issues/275)
> 
> http://cr.openjdk.java.net/~sherman/8184306
> https://bugs.openjdk.java.net/browse/JDK-8184306
> 
> (2) to change the way we handle the returned result Z_BUF_ERROR. Now the
> implementation expects that there might be bytes read from the input and bytes
> written to the output buffer when the deflateParams()/deflate() returns
> Z_BUF_ERROR. It is "interpreted as there is no enough buffer space for all output,
> but the deflater has decoded input bytes and write out output bytes as many as
> possible, come back with more available output space".
> 
> See related github/zlib discussions at #275 [1] and #305[2]
> 
> Thanks,
> Sherman
> 
> [1] https://github.com/madler/zlib/issues/275
> [2] https://github.com/madler/zlib/issues/305



More information about the core-libs-dev mailing list