mirror of
https://github.com/PaperMC/Waterfall.git
synced 2024-10-29 22:59:54 +01:00
69d0c4010d
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: af10f82d Apply and enforce import ordering rules 3f01748d Minecraft 1.14-pre5 support
72 lines
2.8 KiB
Diff
72 lines
2.8 KiB
Diff
From 5c4d4e11b2329b221394f7b216c749edc00c57bf 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 98a54601..8de4d9be 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
|
|
@@ -24,8 +24,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() )
|
|
{
|
|
@@ -33,10 +32,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 ( length == 0 && !allowEmptyPackets) // Waterfall
|
|
{
|
|
throw new CorruptedFrameException( "Empty Packet!" );
|
|
@@ -46,26 +48,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.21.0
|
|
|