mirror of
https://github.com/PaperMC/Waterfall.git
synced 2024-12-03 15:43:37 +01:00
8d41d21148
Upstream has released updates that appear to apply and compile correctly. This update has not been tested by PaperMC and as with ANY update, please do your own testing BungeeCord Changes: 653f1691 Print full stack trace for packet decoder errors 3cb7a127 #3527: Switching between servers causes a decoding error
58 lines
2.5 KiB
Diff
58 lines
2.5 KiB
Diff
From d7ca4dd7a639155cacd0315119bf643584cf2da8 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 76a3ddd0..2aeca781 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;
|
|
@@ -40,13 +42,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() )
|
|
@@ -60,6 +65,16 @@ public class MinecraftDecoder extends MessageToMessageDecoder<ByteBuf>
|
|
|
|
out.add( new PacketWrapper( packet, slice, protocol ) );
|
|
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.42.0
|
|
|