From 44bc15db409226d39ca0330ac01bb1295da34424 Mon Sep 17 00:00:00 2001 From: Shane Freeder Date: Sat, 14 Jun 2025 20:29:12 +0100 Subject: [PATCH] Add system property to skip packet compression threshold validation --- .../proxy/protocol/netty/MinecraftCompressDecoder.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/proxy/src/main/java/com/velocitypowered/proxy/protocol/netty/MinecraftCompressDecoder.java b/proxy/src/main/java/com/velocitypowered/proxy/protocol/netty/MinecraftCompressDecoder.java index 5321b6ac..1fe38e50 100644 --- a/proxy/src/main/java/com/velocitypowered/proxy/protocol/netty/MinecraftCompressDecoder.java +++ b/proxy/src/main/java/com/velocitypowered/proxy/protocol/netty/MinecraftCompressDecoder.java @@ -39,6 +39,7 @@ public class MinecraftCompressDecoder extends MessageToMessageDecoder { private static final int UNCOMPRESSED_CAP = Boolean.getBoolean("velocity.increased-compression-cap") ? HARD_MAXIMUM_UNCOMPRESSED_SIZE : VANILLA_MAXIMUM_UNCOMPRESSED_SIZE; + private static final boolean SKIP_COMPRESSION_VALIDATION = Boolean.getBoolean("velocity.skip-uncompressed-packet-size-validation"); private int threshold; private final VelocityCompressor compressor; @@ -52,9 +53,11 @@ public class MinecraftCompressDecoder extends MessageToMessageDecoder { protected void decode(ChannelHandlerContext ctx, ByteBuf in, List out) throws Exception { int claimedUncompressedSize = ProtocolUtils.readVarInt(in); if (claimedUncompressedSize == 0) { - int actualUncompressedSize = in.readableBytes(); - checkFrame(actualUncompressedSize < threshold, "Actual uncompressed size %s is greater than" - + " threshold %s", actualUncompressedSize, threshold); + if (!SKIP_COMPRESSION_VALIDATION) { + int actualUncompressedSize = in.readableBytes(); + checkFrame(actualUncompressedSize < threshold, "Actual uncompressed size %s is greater than" + + " threshold %s", actualUncompressedSize, threshold); + } // This message is not compressed. out.add(in.retain()); return;