Add checks for undefined packet discriminators when sending messages (#4890)

This commit is contained in:
Ben Staddon authored and LexManos committed 2018-04-22 14:42:05 -07:00
1 parent 90bf8dd95d
commit fc799564ed
1 file changed
+8 -2
@@ -65,11 +65,17 @@ public abstract class FMLIndexedMessageToMessageCodec<A> extends MessageToMessag
@Override
protected final void encode(ChannelHandlerContext ctx, A msg, List<Object> out) throws Exception
{
String channel = ctx.channel().attr(NetworkRegistry.FML_CHANNEL).get();
Class<?> clazz = msg.getClass();
if (!types.containsKey(clazz))
{
throw new RuntimeException("Undefined discriminator for message type " + clazz.getSimpleName() + " in channel " + channel);
}
byte discriminator = types.get(clazz);
PacketBuffer buffer = new PacketBuffer(Unpooled.buffer());
byte discriminator = types.get(msg.getClass());
buffer.writeByte(discriminator);
encodeInto(ctx, msg, buffer);
FMLProxyPacket proxy = new FMLProxyPacket(buffer/*.copy()*/, ctx.channel().attr(NetworkRegistry.FML_CHANNEL).get());
FMLProxyPacket proxy = new FMLProxyPacket(buffer, channel);
WeakReference<FMLProxyPacket> ref = ctx.channel().attr(INBOUNDPACKETTRACKER).get().get();
FMLProxyPacket old = ref == null ? null : ref.get();
if (old != null)