Waterfall/BungeeCord-Patches/0043-Don-t-use-a-bytebuf-for-packet-decoding.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

71 lines
2.7 KiB
Diff

From 145c6a12317d0d9ec49a7902a461de1a178632f5 Mon Sep 17 00:00:00 2001
From: creeper123123321 <creeper123123321@gmail.com>
Date: Thu, 17 Jan 2019 03:25:59 +0000
Subject: [PATCH] Don't use a bytebuf for packet decoding
diff --git a/protocol/src/main/java/net/md_5/bungee/protocol/Varint21FrameDecoder.java b/protocol/src/main/java/net/md_5/bungee/protocol/Varint21FrameDecoder.java
index cf7dea17..3a802ca4 100644
--- a/protocol/src/main/java/net/md_5/bungee/protocol/Varint21FrameDecoder.java
+++ b/protocol/src/main/java/net/md_5/bungee/protocol/Varint21FrameDecoder.java
@@ -27,8 +27,7 @@ public class Varint21FrameDecoder extends ByteToMessageDecoder
in.markReaderIndex();
- final byte[] buf = new byte[ 3 ];
- for ( int i = 0; i < buf.length; i++ )
+ for ( int i = 0; i < 3; i++ ) // Waterfall
{
if ( !in.isReadable() )
{
@@ -36,10 +35,13 @@ public class Varint21FrameDecoder extends ByteToMessageDecoder
return;
}
- buf[i] = in.readByte();
- if ( buf[i] >= 0 )
+ // Waterfall start
+ byte read = in.readByte();
+ if ( read >= 0 )
{
- int length = DefinedPacket.readVarInt( Unpooled.wrappedBuffer( buf ) );
+ in.resetReaderIndex();
+ int length = DefinedPacket.readVarInt( in );
+ // Waterfall end
if ( false && length == 0) // Waterfall - ignore
{
throw new CorruptedFrameException( "Empty Packet!" );
@@ -49,25 +51,11 @@ public class Varint21FrameDecoder extends ByteToMessageDecoder
{
in.resetReaderIndex();
return;
- } else
- {
- if ( in.hasMemoryAddress() )
- {
- out.add( in.readRetainedSlice( length ) );
- } else
- {
- if ( !DIRECT_WARNING )
- {
- DIRECT_WARNING = true;
- System.out.println( "Netty is not using direct IO buffers." );
- }
-
- // See https://github.com/SpigotMC/BungeeCord/issues/1717
- ByteBuf dst = ctx.alloc().directBuffer( length );
- in.readBytes( dst );
- out.add( dst );
- }
+ // Waterfall start
+ } else {
+ out.add(in.readRetainedSlice(length));
return;
+ // Waterfall end
}
}
}
--
2.43.0