From a9a0a672f0e751f3df5c8ae757ad57f9d2b5e155 Mon Sep 17 00:00:00 2001 From: themode Date: Sat, 20 Mar 2021 10:20:45 +0100 Subject: [PATCH] Reduce deflater level, prevent race condition when releasing tick buffer --- .../minestom/server/network/netty/channel/ClientChannel.java | 5 ++++- .../server/network/netty/codec/PacketCompressor.java | 2 +- src/main/java/net/minestom/server/utils/PacketUtils.java | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/main/java/net/minestom/server/network/netty/channel/ClientChannel.java b/src/main/java/net/minestom/server/network/netty/channel/ClientChannel.java index ad9abe2d9..f915afccf 100644 --- a/src/main/java/net/minestom/server/network/netty/channel/ClientChannel.java +++ b/src/main/java/net/minestom/server/network/netty/channel/ClientChannel.java @@ -71,7 +71,10 @@ public class ClientChannel extends SimpleChannelInboundHandler { // Release tick buffer if (playerConnection instanceof NettyPlayerConnection) { - ((NettyPlayerConnection) playerConnection).getTickBuffer().release(); + final ByteBuf tickBuffer = ((NettyPlayerConnection) playerConnection).getTickBuffer(); + synchronized (tickBuffer) { + tickBuffer.release(); + } } } } diff --git a/src/main/java/net/minestom/server/network/netty/codec/PacketCompressor.java b/src/main/java/net/minestom/server/network/netty/codec/PacketCompressor.java index 514f9f90d..ebee11ebc 100644 --- a/src/main/java/net/minestom/server/network/netty/codec/PacketCompressor.java +++ b/src/main/java/net/minestom/server/network/netty/codec/PacketCompressor.java @@ -36,7 +36,7 @@ public class PacketCompressor extends ByteToMessageCodec { private final byte[] buffer = new byte[8192]; - private final Deflater deflater = new Deflater(); + private final Deflater deflater = new Deflater(3); private final Inflater inflater = new Inflater(); public PacketCompressor(int threshold) { diff --git a/src/main/java/net/minestom/server/utils/PacketUtils.java b/src/main/java/net/minestom/server/utils/PacketUtils.java index b391f96c2..bf71ecb88 100644 --- a/src/main/java/net/minestom/server/utils/PacketUtils.java +++ b/src/main/java/net/minestom/server/utils/PacketUtils.java @@ -25,7 +25,7 @@ import java.util.zip.Deflater; public final class PacketUtils { private static final PacketListenerManager PACKET_LISTENER_MANAGER = MinecraftServer.getPacketListenerManager(); - private static final ThreadLocal DEFLATER = ThreadLocal.withInitial(Deflater::new); + private static final ThreadLocal DEFLATER = ThreadLocal.withInitial(() -> new Deflater(3)); private PacketUtils() {