mirror of
https://github.com/PaperMC/Waterfall.git
synced 2025-02-11 09:21:36 +01:00
Upstream has released updates that appear to apply and compile correctly. This update has not been tested by PaperMC and as with ANY update, please do your own testing BungeeCord Changes: 1a807731 #3567: Bump org.apache.maven.plugins:maven-javadoc-plugin from 3.6.2 to 3.6.3 772ad995 #3566: Bump actions/setup-java from 3 to 4 2431c40a #3562: Bump io.netty:netty-bom from 4.1.100.Final to 4.1.101.Final 8144ae8d #3555: Bump com.mysql:mysql-connector-j from 8.1.0 to 8.2.0 0757c39a Attempt upgrade of resolver libraries
63 lines
2.7 KiB
Diff
63 lines
2.7 KiB
Diff
From 248079a510a933343b7f52004e87a7c38170a5ed Mon Sep 17 00:00:00 2001
|
|
From: Techcable <Techcable@techcable.net>
|
|
Date: Fri, 18 Mar 2016 10:53:24 -0700
|
|
Subject: [PATCH] Better Decompression Sanity
|
|
|
|
Fixes #40
|
|
|
|
diff --git a/proxy/src/main/java/net/md_5/bungee/compress/PacketDecompressor.java b/proxy/src/main/java/net/md_5/bungee/compress/PacketDecompressor.java
|
|
index 445ee947..eaedf4bc 100644
|
|
--- a/proxy/src/main/java/net/md_5/bungee/compress/PacketDecompressor.java
|
|
+++ b/proxy/src/main/java/net/md_5/bungee/compress/PacketDecompressor.java
|
|
@@ -1,5 +1,7 @@
|
|
package net.md_5.bungee.compress;
|
|
|
|
+import lombok.*;
|
|
+
|
|
import com.google.common.base.Preconditions;
|
|
import io.netty.buffer.ByteBuf;
|
|
import io.netty.channel.ChannelHandlerContext;
|
|
@@ -8,9 +10,11 @@ import java.util.List;
|
|
import net.md_5.bungee.jni.zlib.BungeeZlib;
|
|
import net.md_5.bungee.protocol.DefinedPacket;
|
|
|
|
+@RequiredArgsConstructor
|
|
public class PacketDecompressor extends MessageToMessageDecoder<ByteBuf>
|
|
{
|
|
|
|
+ private final int compressionThreshold;
|
|
private final BungeeZlib zlib = CompressFactory.zlib.newInstance();
|
|
|
|
@Override
|
|
@@ -34,12 +38,13 @@ public class PacketDecompressor extends MessageToMessageDecoder<ByteBuf>
|
|
out.add( in.retain() );
|
|
} else
|
|
{
|
|
+ Preconditions.checkArgument( size >= compressionThreshold, "Decompressed size %s less than compression threshold %s", size, compressionThreshold);
|
|
ByteBuf decompressed = ctx.alloc().directBuffer();
|
|
|
|
try
|
|
{
|
|
zlib.process( in, decompressed );
|
|
- Preconditions.checkState( decompressed.readableBytes() == size, "Decompressed packet size mismatch" );
|
|
+ Preconditions.checkArgument( decompressed.readableBytes() == size, "Decompressed size %s is not equal to actual decompressed bytes", size, decompressed.readableBytes());
|
|
|
|
out.add( decompressed );
|
|
decompressed = null;
|
|
diff --git a/proxy/src/main/java/net/md_5/bungee/netty/ChannelWrapper.java b/proxy/src/main/java/net/md_5/bungee/netty/ChannelWrapper.java
|
|
index e8d5ed19..00e03bae 100644
|
|
--- a/proxy/src/main/java/net/md_5/bungee/netty/ChannelWrapper.java
|
|
+++ b/proxy/src/main/java/net/md_5/bungee/netty/ChannelWrapper.java
|
|
@@ -181,7 +181,7 @@ public class ChannelWrapper
|
|
|
|
if ( ch.pipeline().get( PacketDecompressor.class ) == null && compressionThreshold >= 0 )
|
|
{
|
|
- addBefore( PipelineUtils.PACKET_DECODER, "decompress", new PacketDecompressor() );
|
|
+ addBefore( PipelineUtils.PACKET_DECODER, "decompress", new PacketDecompressor(compressionThreshold) );
|
|
}
|
|
if ( compressionThreshold < 0 )
|
|
{
|
|
--
|
|
2.43.0
|
|
|