mirror of
https://github.com/PaperMC/Waterfall.git
synced 2025-01-01 05:27:47 +01:00
2cab85cbef
This patch was heavily intented to fix a server side issue which is generally no longer relevant, not to mention the cost of interning only cements this patch into it's grave
58 lines
2.5 KiB
Diff
58 lines
2.5 KiB
Diff
From c59995528d7529b70f4c8b323762b6afb01da957 Mon Sep 17 00:00:00 2001
|
|
From: Techcable <Techcable@techcable.net>
|
|
Date: Thu, 4 Aug 2016 19:30:49 -0700
|
|
Subject: [PATCH] Dump the raw hex of a packet on a decoding error
|
|
|
|
|
|
diff --git a/protocol/src/main/java/net/md_5/bungee/protocol/MinecraftDecoder.java b/protocol/src/main/java/net/md_5/bungee/protocol/MinecraftDecoder.java
|
|
index 5b32effe..9e9ea49c 100644
|
|
--- a/protocol/src/main/java/net/md_5/bungee/protocol/MinecraftDecoder.java
|
|
+++ b/protocol/src/main/java/net/md_5/bungee/protocol/MinecraftDecoder.java
|
|
@@ -1,7 +1,9 @@
|
|
package net.md_5.bungee.protocol;
|
|
|
|
import io.netty.buffer.ByteBuf;
|
|
+import io.netty.buffer.ByteBufUtil;
|
|
import io.netty.channel.ChannelHandlerContext;
|
|
+import io.netty.handler.codec.DecoderException;
|
|
import io.netty.handler.codec.MessageToMessageDecoder;
|
|
import java.util.List;
|
|
import lombok.AllArgsConstructor;
|
|
@@ -31,13 +33,16 @@ public class MinecraftDecoder extends MessageToMessageDecoder<ByteBuf>
|
|
Protocol.DirectionData prot = ( server ) ? protocol.TO_SERVER : protocol.TO_CLIENT;
|
|
ByteBuf slice = in.copy(); // Can't slice this one due to EntityMap :(
|
|
|
|
+ Object packetTypeInfo = null;
|
|
try
|
|
{
|
|
int packetId = DefinedPacket.readVarInt( in );
|
|
+ packetTypeInfo = packetId;
|
|
|
|
DefinedPacket packet = prot.createPacket( packetId, protocolVersion, supportsForge );
|
|
if ( packet != null )
|
|
{
|
|
+ packetTypeInfo = packet.getClass();
|
|
packet.read( in, prot.getDirection(), protocolVersion );
|
|
|
|
if ( in.isReadable() )
|
|
@@ -51,6 +56,16 @@ public class MinecraftDecoder extends MessageToMessageDecoder<ByteBuf>
|
|
|
|
out.add( new PacketWrapper( packet, slice ) );
|
|
slice = null;
|
|
+ } catch (BadPacketException | IndexOutOfBoundsException e) {
|
|
+ final String packetTypeStr;
|
|
+ if (packetTypeInfo instanceof Integer) {
|
|
+ packetTypeStr = "id " + Integer.toHexString((Integer) packetTypeInfo);
|
|
+ } else if (packetTypeInfo instanceof Class) {
|
|
+ packetTypeStr = "class " + ((Class) packetTypeInfo).getSimpleName();
|
|
+ } else {
|
|
+ packetTypeStr = "unknown";
|
|
+ }
|
|
+ throw new DecoderException("Error decoding packet " + packetTypeStr + " with contents:\n" + ByteBufUtil.prettyHexDump(slice), e);
|
|
} finally
|
|
{
|
|
if ( slice != null )
|
|
--
|
|
2.26.1
|
|
|