mirror of
https://github.com/PaperMC/Waterfall.git
synced 2024-09-06 11:48:05 +02:00
Upstream has released updates that appears 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: 15b51413 #2908: Don't frame packets for dead connections a0f9333a Bump version to 1.16-R0.4-SNAPSHOT 287e28a7 Release 1.16-R0.3 c1522ab9 #2909: Don't serialise as array for single element contents 0af4bfdb #2905: HoverEvent getValue compat method
58 lines
2.5 KiB
Diff
58 lines
2.5 KiB
Diff
From 5622d256e0495063202405cc950979edbd464bde 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 5e03e175..961887c9 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;
|
|
@@ -38,13 +40,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() )
|
|
@@ -58,6 +63,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.25.1
|
|
|