Repository: knox Updated Branches: refs/heads/master 84d794f84 -> 87d7291bd
KNOX-1534 - Avoid try/catch checking for gzip stream Signed-off-by: Kevin Risden <kris...@apache.org> Project: http://git-wip-us.apache.org/repos/asf/knox/repo Commit: http://git-wip-us.apache.org/repos/asf/knox/commit/87d7291b Tree: http://git-wip-us.apache.org/repos/asf/knox/tree/87d7291b Diff: http://git-wip-us.apache.org/repos/asf/knox/diff/87d7291b Branch: refs/heads/master Commit: 87d7291bd3bdfe498d6f692430b3d02fe47c21ab Parents: 84d794f Author: Kevin Risden <kris...@apache.org> Authored: Fri Oct 19 12:05:35 2018 -0400 Committer: Kevin Risden <kris...@apache.org> Committed: Mon Oct 22 09:41:25 2018 -0400 ---------------------------------------------------------------------- .../filter/rewrite/impl/UrlRewriteResponse.java | 25 +++++++++++--------- 1 file changed, 14 insertions(+), 11 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/knox/blob/87d7291b/gateway-provider-rewrite/src/main/java/org/apache/knox/gateway/filter/rewrite/impl/UrlRewriteResponse.java ---------------------------------------------------------------------- diff --git a/gateway-provider-rewrite/src/main/java/org/apache/knox/gateway/filter/rewrite/impl/UrlRewriteResponse.java b/gateway-provider-rewrite/src/main/java/org/apache/knox/gateway/filter/rewrite/impl/UrlRewriteResponse.java index ce16a9a..8d8f401 100644 --- a/gateway-provider-rewrite/src/main/java/org/apache/knox/gateway/filter/rewrite/impl/UrlRewriteResponse.java +++ b/gateway-provider-rewrite/src/main/java/org/apache/knox/gateway/filter/rewrite/impl/UrlRewriteResponse.java @@ -153,21 +153,18 @@ public class UrlRewriteResponse extends GatewayResponseWrapper implements Params InputStream inStream; OutputStream outStream; - boolean isGzip = false; + // Use this way to check whether the input stream is gzip compressed, in case + // the content encoding header is unknown, as it could be unset in inbound response + boolean isGzip = false; BufferedInputStream inBuffer = new BufferedInputStream(input, STREAM_BUFFER_SIZE); - - try { - // Use this way to check whether the input stream is gzip compressed, in case - // the content encoding header is unknown, as it could be unset in inbound response - inBuffer.mark(STREAM_BUFFER_SIZE); - inStream = new GZIPInputStream(new GZIPInputStreamHelperInputStream(inBuffer), STREAM_BUFFER_SIZE); + inBuffer.mark(2); + byte [] signature = new byte[2]; + int len = inBuffer.read( signature ); //read the signature + if( len == 2 && signature[ 0 ] == (byte) 0x1f && signature[ 1 ] == (byte) 0x8b ) { isGzip = true; - } catch (IOException e) { - // Not proper gzip content - inBuffer.reset(); - inStream = inBuffer; } + inBuffer.reset(); MimeType mimeType = getMimeType(); UrlRewriteFilterContentDescriptor filterContentConfig = @@ -179,6 +176,12 @@ public class UrlRewriteResponse extends GatewayResponseWrapper implements Params } } + if(isGzip) { + inStream = new GZIPInputStream(new GZIPInputStreamHelperInputStream(inBuffer), STREAM_BUFFER_SIZE); + } else { + inStream = inBuffer; + } + InputStream filteredInput = UrlRewriteStreamFilterFactory.create(mimeType, null, inStream,