Waterfall/BungeeCord-Patches/0029-Dump-the-raw-hex-of-a-packet-on-a-decoding-error.patch
Shane Freeder 25ecd402f3
Updated Upstream (BungeeCord)
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:
1a807731 #3567: Bump org.apache.maven.plugins:maven-javadoc-plugin from 3.6.2 to 3.6.3
772ad995 #3566: Bump actions/setup-java from 3 to 4
2431c40a #3562: Bump io.netty:netty-bom from 4.1.100.Final to 4.1.101.Final
8144ae8d #3555: Bump com.mysql:mysql-connector-j from 8.1.0 to 8.2.0
0757c39a Attempt upgrade of resolver libraries
2023-12-13 15:18:04 +00:00

58 lines
2.5 KiB
Diff

From 97625eccc25929d5d7d83f56648cebf15949af9c 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 250e7620..2207c3ff 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, protocol, 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.43.0