From 3e4107a222ffabc5e784682f5449999c80da7eae Mon Sep 17 00:00:00 2001 From: cpw Date: Sat, 20 Feb 2016 16:04:31 -0500 Subject: [PATCH] Fix race condition when using indexed codec in a LAN server. Fixes spurious crash when LAN server is running. --- .../fml/common/network/FMLIndexedMessageToMessageCodec.java | 2 +- .../fml/common/network/internal/FMLProxyPacket.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/minecraftforge/fml/common/network/FMLIndexedMessageToMessageCodec.java b/src/main/java/net/minecraftforge/fml/common/network/FMLIndexedMessageToMessageCodec.java index 62ff2dd42..c168081f1 100644 --- a/src/main/java/net/minecraftforge/fml/common/network/FMLIndexedMessageToMessageCodec.java +++ b/src/main/java/net/minecraftforge/fml/common/network/FMLIndexedMessageToMessageCodec.java @@ -69,7 +69,7 @@ public abstract class FMLIndexedMessageToMessageCodec extends MessageToMessag protected final void decode(ChannelHandlerContext ctx, FMLProxyPacket msg, List out) throws Exception { testMessageValidity(msg); - ByteBuf payload = msg.payload().copy(); + ByteBuf payload = msg.payload().duplicate(); if (payload.readableBytes() < 1) { FMLLog.log(Level.ERROR, "The FMLIndexedCodec has received an empty buffer on channel %s, likely a result of a LAN server issue. Pipeline parts : %s", ctx.channel().attr(NetworkRegistry.FML_CHANNEL), ctx.pipeline().toString()); diff --git a/src/main/java/net/minecraftforge/fml/common/network/internal/FMLProxyPacket.java b/src/main/java/net/minecraftforge/fml/common/network/internal/FMLProxyPacket.java index 50aba05cc..66a9cd302 100644 --- a/src/main/java/net/minecraftforge/fml/common/network/internal/FMLProxyPacket.java +++ b/src/main/java/net/minecraftforge/fml/common/network/internal/FMLProxyPacket.java @@ -133,7 +133,7 @@ public class FMLProxyPacket implements Packet { if (data.length < PART_SIZE) { - ret.add(new S3FPacketCustomPayload(channel, payload)); + ret.add(new S3FPacketCustomPayload(channel, new PacketBuffer(payload.duplicate()))); } else {