mirror of
https://github.com/PaperMC/Waterfall.git
synced 2024-09-30 07:27:28 +02:00
acf737f35f
Upstream has released updates that appears 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: a25c2b32 Fix typo in previous commit c57bf611 #3113: Remove unnecessary slice in PacketDecompressor Co-authored-by: Thomas A <thomas.a@erisium.com>
63 lines
2.7 KiB
Diff
63 lines
2.7 KiB
Diff
From 7533aa6de4430f84ea6bb8deb1b1ae4a23d02a70 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 6be2d942..6dc5633f 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
|
|
@@ -138,7 +138,7 @@ public class ChannelWrapper
|
|
|
|
if ( ch.pipeline().get( PacketDecompressor.class ) == null && compressionThreshold != -1 )
|
|
{
|
|
- addBefore( PipelineUtils.PACKET_DECODER, "decompress", new PacketDecompressor() );
|
|
+ addBefore( PipelineUtils.PACKET_DECODER, "decompress", new PacketDecompressor(compressionThreshold) );
|
|
}
|
|
if ( compressionThreshold == -1 )
|
|
{
|
|
--
|
|
2.30.1 (Apple Git-130)
|
|
|