mirror of
https://github.com/PaperMC/Waterfall.git
synced 2024-12-04 08:03:35 +01:00
a6198586d9
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
72 lines
2.8 KiB
Diff
72 lines
2.8 KiB
Diff
From d0addd4231eb0c95f4b8dcecce83a6d739667003 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 f297620c..c0d37142 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,26 +51,11 @@ public class Varint21FrameDecoder extends ByteToMessageDecoder
|
|
{
|
|
in.resetReaderIndex();
|
|
return;
|
|
- } else
|
|
- {
|
|
- if ( in.hasMemoryAddress() )
|
|
- {
|
|
- out.add( in.slice( in.readerIndex(), length ).retain() );
|
|
- in.skipBytes( 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.25.1
|
|
|