in curator-framework/src/main/java/org/apache/curator/framework/imps/GzipCompressionProvider.java [267:295]
private static int doReadHeader(ByteBuffer gzippedData) throws IOException {
if (gzippedData.getChar() != GZIP_MAGIC) {
throw new ZipException("Not in GZip format");
}
if (gzippedData.get() != Deflater.DEFLATED) {
throw new ZipException("Unsupported compression method");
}
int flags = gzippedData.get();
// Skip MTIME, XFL, and OS fields
skip(gzippedData, Integer.BYTES + Byte.BYTES + Byte.BYTES);
if ((flags & FEXTRA) != 0) {
int extraBytes = gzippedData.getChar();
skip(gzippedData, extraBytes);
}
if ((flags & FNAME) != 0) {
skipZeroTerminatedString(gzippedData);
}
if ((flags & FCOMMENT) != 0) {
skipZeroTerminatedString(gzippedData);
}
if ((flags & FHCRC) != 0) {
CRC32 crc = new CRC32();
crc.update(gzippedData.array(), 0, gzippedData.position());
if (gzippedData.getChar() != (char) crc.getValue()) {
throw new ZipException("Corrupt GZIP header");
}
}
return gzippedData.position();
}