Skip to content

Commit 64c8983

Browse files
authored
Add support for snappy http2 content decompression (#13530)
Motivation: Since netty already supports the decompression of snappy's http content encoding, it should also consider supporting snappy's http2 content decompression Modification: Add support for snappy http content decompression Result: Netty supports snappy http content decompression --------- Signed-off-by: xingrufei <qhdxssm@qq.com>
1 parent ec9875d commit 64c8983

2 files changed

Lines changed: 9 additions & 1 deletion

File tree

codec-http2/src/main/java/io/netty/handler/codec/http2/CompressorHttp2ConnectionEncoder.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,10 +85,12 @@ private static CompressionOptions[] defaultCompressionOptions() {
8585
if (Brotli.isAvailable()) {
8686
return new CompressionOptions[] {
8787
StandardCompressionOptions.brotli(),
88+
StandardCompressionOptions.snappy(),
8889
StandardCompressionOptions.gzip(),
8990
StandardCompressionOptions.deflate() };
9091
}
91-
return new CompressionOptions[] { StandardCompressionOptions.gzip(), StandardCompressionOptions.deflate() };
92+
return new CompressionOptions[] { StandardCompressionOptions.snappy(),
93+
StandardCompressionOptions.gzip(), StandardCompressionOptions.deflate() };
9294
}
9395

9496
/**

codec-http2/src/main/java/io/netty/handler/codec/http2/DelegatingDecompressorFrameListener.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import io.netty.handler.codec.compression.BrotliDecoder;
2424
import io.netty.handler.codec.compression.ZlibCodecFactory;
2525
import io.netty.handler.codec.compression.ZlibWrapper;
26+
import io.netty.handler.codec.compression.SnappyFrameDecoder;
2627
import io.netty.util.internal.UnstableApi;
2728

2829
import static io.netty.handler.codec.http.HttpHeaderNames.CONTENT_ENCODING;
@@ -33,6 +34,7 @@
3334
import static io.netty.handler.codec.http.HttpHeaderValues.IDENTITY;
3435
import static io.netty.handler.codec.http.HttpHeaderValues.X_DEFLATE;
3536
import static io.netty.handler.codec.http.HttpHeaderValues.X_GZIP;
37+
import static io.netty.handler.codec.http.HttpHeaderValues.SNAPPY;
3638
import static io.netty.handler.codec.http2.Http2Error.INTERNAL_ERROR;
3739
import static io.netty.handler.codec.http2.Http2Exception.streamError;
3840
import static io.netty.util.internal.ObjectUtil.checkNotNull;
@@ -182,6 +184,10 @@ protected EmbeddedChannel newContentDecompressor(final ChannelHandlerContext ctx
182184
return new EmbeddedChannel(ctx.channel().id(), ctx.channel().metadata().hasDisconnect(),
183185
ctx.channel().config(), new BrotliDecoder());
184186
}
187+
if (SNAPPY.contentEqualsIgnoreCase(contentEncoding)) {
188+
return new EmbeddedChannel(ctx.channel().id(), ctx.channel().metadata().hasDisconnect(),
189+
ctx.channel().config(), new SnappyFrameDecoder());
190+
}
185191
// 'identity' or unsupported
186192
return null;
187193
}

0 commit comments

Comments
 (0)