Update to Netty CR3 but include workaround for (bug?) present in it. Feedback is welcome, #448 is related.

This commit is contained in:
md_5 2013-06-23 10:40:27 +10:00
parent 13f1fa7443
commit 9a173968f1
3 changed files with 20 additions and 13 deletions

View File

@ -59,7 +59,7 @@
<properties> <properties>
<build.number>unknown</build.number> <build.number>unknown</build.number>
<netty.version>4.0.0.CR1</netty.version> <netty.version>4.0.0.CR3</netty.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties> </properties>

View File

@ -251,17 +251,24 @@ public class InitialHandler extends PacketHandler implements PendingConnection
{ {
return; return;
} }
thisState = InitialHandler.State.LOGIN; thisState = InitialHandler.State.LOGIN;
unsafe().sendPacket( new PacketFCEncryptionResponse( new byte[ 0 ], new byte[ 0 ] ) );
try ch.getHandle().eventLoop().execute( new Runnable()
{ {
Cipher encrypt = EncryptionUtil.getCipher( Cipher.ENCRYPT_MODE, sharedKey ); @Override
ch.getHandle().pipeline().addBefore( PipelineUtils.DECRYPT_HANDLER, PipelineUtils.ENCRYPT_HANDLER, new CipherEncoder( encrypt ) ); public void run()
} catch ( GeneralSecurityException ex ) {
{ unsafe().sendPacket( new PacketFCEncryptionResponse( new byte[ 0 ], new byte[ 0 ] ) );
disconnect( "Cipher error: " + Util.exception( ex ) ); try
} {
Cipher encrypt = EncryptionUtil.getCipher( Cipher.ENCRYPT_MODE, sharedKey );
ch.getHandle().pipeline().addBefore( PipelineUtils.DECRYPT_HANDLER, PipelineUtils.ENCRYPT_HANDLER, new CipherEncoder( encrypt ) );
} catch ( GeneralSecurityException ex )
{
disconnect( "Cipher error: " + Util.exception( ex ) );
}
}
} );
} }
}; };

View File

@ -28,7 +28,7 @@ public class PacketDecoder extends ReplayingDecoder<Void>
private Protocol protocol; private Protocol protocol;
@Override @Override
protected Object decode(ChannelHandlerContext ctx, ByteBuf in) throws Exception protected void decode(ChannelHandlerContext ctx, ByteBuf in, MessageBuf<Object> out) throws Exception
{ {
// While we have enough data // While we have enough data
while ( true ) while ( true )
@ -53,10 +53,10 @@ public class PacketDecoder extends ReplayingDecoder<Void>
// Store our decoded message // Store our decoded message
if ( packet != null ) if ( packet != null )
{ {
return( new PacketWrapper( packet, buf ) ); out.add( new PacketWrapper( packet, buf ) );
} else } else
{ {
return( buf ); out.add( buf );
} }
} }
} }