From 6139802e21c2c2725940f4bebec74c4d4b428cc4 Mon Sep 17 00:00:00 2001 From: md_5 Date: Fri, 19 Jul 2013 19:45:54 +1000 Subject: [PATCH] Update to Netty 4.0.3 final! --- CraftBukkit-Patches/0024-Netty.patch | 75 +++++++++++++--------------- 1 file changed, 35 insertions(+), 40 deletions(-) diff --git a/CraftBukkit-Patches/0024-Netty.patch b/CraftBukkit-Patches/0024-Netty.patch index 14e35487a..ae14e5cdf 100644 --- a/CraftBukkit-Patches/0024-Netty.patch +++ b/CraftBukkit-Patches/0024-Netty.patch @@ -1,11 +1,11 @@ -From f47ec3b81b2512a6904927307314c5100417a8f5 Mon Sep 17 00:00:00 2001 +From 6071b529eb6feea2d98d6e5e84e360b62f826ac2 Mon Sep 17 00:00:00 2001 From: md_5 Date: Tue, 2 Jul 2013 09:06:29 +1000 Subject: [PATCH] Netty diff --git a/pom.xml b/pom.xml -index afe0225..4cffec7 100644 +index afe0225..a9d2132 100644 --- a/pom.xml +++ b/pom.xml @@ -112,6 +112,21 @@ @@ -15,12 +15,12 @@ index afe0225..4cffec7 100644 + + io.netty + netty-codec -+ 4.0.0.CR9 ++ 4.0.3.Final + + + io.netty + netty-handler -+ 4.0.0.CR9 ++ 4.0.3.Final + + + org.javassist @@ -316,7 +316,7 @@ index 0000000..c4306f7 +} diff --git a/src/main/java/org/spigotmc/netty/CipherDecoder.java b/src/main/java/org/spigotmc/netty/CipherDecoder.java new file mode 100644 -index 0000000..a1094d2 +index 0000000..e37bae7 --- /dev/null +++ b/src/main/java/org/spigotmc/netty/CipherDecoder.java @@ -0,0 +1,24 @@ @@ -324,8 +324,8 @@ index 0000000..a1094d2 + +import io.netty.buffer.ByteBuf; +import io.netty.channel.ChannelHandlerContext; -+import io.netty.channel.MessageList; +import io.netty.handler.codec.MessageToMessageDecoder; ++import java.util.List; +import javax.crypto.Cipher; + +public class CipherDecoder extends MessageToMessageDecoder @@ -339,7 +339,7 @@ index 0000000..a1094d2 + } + + @Override -+ protected void decode(ChannelHandlerContext ctx, ByteBuf msg, MessageList out) throws Exception ++ protected void decode(ChannelHandlerContext ctx, ByteBuf msg, List out) throws Exception + { + out.add( cipher.cipher( ctx, msg ) ); + } @@ -375,17 +375,16 @@ index 0000000..2eb1dcb +} diff --git a/src/main/java/org/spigotmc/netty/NettyNetworkManager.java b/src/main/java/org/spigotmc/netty/NettyNetworkManager.java new file mode 100644 -index 0000000..d501d8c +index 0000000..7dc16ac --- /dev/null +++ b/src/main/java/org/spigotmc/netty/NettyNetworkManager.java -@@ -0,0 +1,312 @@ +@@ -0,0 +1,307 @@ +package org.spigotmc.netty; + +import com.google.common.util.concurrent.ThreadFactoryBuilder; +import io.netty.channel.Channel; +import io.netty.channel.ChannelHandlerContext; -+import io.netty.channel.ChannelInboundHandlerAdapter; -+import io.netty.channel.MessageList; ++import io.netty.channel.SimpleChannelInboundHandler; +import io.netty.channel.socket.SocketChannel; +import java.net.Socket; +import java.net.SocketAddress; @@ -412,7 +411,7 @@ index 0000000..d501d8c + * {@link INetworkManager} and handles all events and inbound messages provided + * by the upstream Netty process. + */ -+public class NettyNetworkManager extends ChannelInboundHandlerAdapter implements INetworkManager ++public class NettyNetworkManager extends SimpleChannelInboundHandler implements INetworkManager +{ + + private static final ExecutorService threadPool = Executors.newCachedThreadPool( new ThreadFactoryBuilder().setNameFormat( "Async Packet Handler - %1$d" ).build() ); @@ -489,37 +488,33 @@ index 0000000..d501d8c + } + + @Override -+ public void messageReceived(ChannelHandlerContext ctx, MessageList msgs) throws Exception ++ protected void channelRead0(ChannelHandlerContext ctx, final Packet msg) throws Exception + { -+ MessageList packets = msgs.cast(); -+ for ( final Packet msg : packets ) ++ if ( connected ) + { -+ if ( connected ) ++ if ( msg instanceof Packet252KeyResponse ) + { -+ if ( msg instanceof Packet252KeyResponse ) -+ { -+ secret = ( (Packet252KeyResponse) msg ).a( key ); -+ Cipher decrypt = NettyServerConnection.getCipher( Cipher.DECRYPT_MODE, secret ); -+ channel.pipeline().addBefore( "decoder", "decrypt", new CipherDecoder( decrypt ) ); -+ } ++ secret = ( (Packet252KeyResponse) msg ).a( key ); ++ Cipher decrypt = NettyServerConnection.getCipher( Cipher.DECRYPT_MODE, secret ); ++ channel.pipeline().addBefore( "decoder", "decrypt", new CipherDecoder( decrypt ) ); ++ } + -+ if ( msg.a_() ) ++ if ( msg.a_() ) ++ { ++ threadPool.submit( new Runnable() + { -+ threadPool.submit( new Runnable() ++ public void run() + { -+ public void run() ++ Packet packet = PacketListener.callReceived( NettyNetworkManager.this, connection, msg ); ++ if ( packet != null ) + { -+ Packet packet = PacketListener.callReceived( NettyNetworkManager.this, connection, msg ); -+ if ( packet != null ) -+ { -+ packet.handle( connection ); -+ } ++ packet.handle( connection ); + } -+ } ); -+ } else -+ { -+ syncPackets.add( msg ); -+ } ++ } ++ } ); ++ } else ++ { ++ syncPackets.add( msg ); + } + } + } @@ -1169,7 +1164,7 @@ index 0000000..5da8a59 +} diff --git a/src/main/java/org/spigotmc/netty/PacketDecoder.java b/src/main/java/org/spigotmc/netty/PacketDecoder.java new file mode 100644 -index 0000000..f459ed1 +index 0000000..7e43b14 --- /dev/null +++ b/src/main/java/org/spigotmc/netty/PacketDecoder.java @@ -0,0 +1,80 @@ @@ -1178,12 +1173,12 @@ index 0000000..f459ed1 +import io.netty.buffer.ByteBuf; +import io.netty.buffer.ByteBufInputStream; +import io.netty.channel.ChannelHandlerContext; -+import io.netty.channel.MessageList; +import io.netty.handler.codec.ReplayingDecoder; +import java.io.DataInput; +import java.io.DataInputStream; +import java.io.EOFException; +import java.io.IOException; ++import java.util.List; +import net.minecraft.server.MinecraftServer; +import net.minecraft.server.Packet; +import net.minecraft.server.Packet254GetInfo; @@ -1206,7 +1201,7 @@ index 0000000..f459ed1 + } + + @Override -+ protected void decode(ChannelHandlerContext ctx, ByteBuf in, MessageList out) throws Exception ++ protected void decode(ChannelHandlerContext ctx, ByteBuf in, List out) throws Exception + { + if ( shutdown ) + { @@ -1373,7 +1368,7 @@ index 0000000..965ba12 +} diff --git a/src/main/java/org/spigotmc/netty/PacketWriter.java b/src/main/java/org/spigotmc/netty/PacketWriter.java new file mode 100644 -index 0000000..50f59ed +index 0000000..9d947bc --- /dev/null +++ b/src/main/java/org/spigotmc/netty/PacketWriter.java @@ -0,0 +1,85 @@ @@ -1449,7 +1444,7 @@ index 0000000..50f59ed + // Let Netty handle any errors from here on + success = true; + // Write down our single ByteBuf -+ channel.write( outBuf ); ++ channel.writeAndFlush( outBuf ); + } finally + { + // Reset packet queue