diff --git a/Emulator/src/main/java/com/eu/habbo/networking/gameserver/crypto/WsAesDecoder.java b/Emulator/src/main/java/com/eu/habbo/networking/gameserver/crypto/WsAesDecoder.java index fade61ce..0cc947da 100644 --- a/Emulator/src/main/java/com/eu/habbo/networking/gameserver/crypto/WsAesDecoder.java +++ b/Emulator/src/main/java/com/eu/habbo/networking/gameserver/crypto/WsAesDecoder.java @@ -39,7 +39,7 @@ public class WsAesDecoder extends MessageToMessageDecoder { byte[] plain = WsSessionCrypto.aesGcmDecrypt(key, nonce, ct); out.add(Unpooled.wrappedBuffer(plain)); } catch (Exception e) { - LOGGER.warn("[ws-crypto] AES-GCM decrypt failed", e); + LOGGER.warn("[ws-crypto] AES-GCM decrypt failed ({}), closing channel", e.getClass().getSimpleName()); ctx.close(); } } diff --git a/Emulator/src/main/java/com/eu/habbo/networking/gameserver/crypto/WsHandshakeHandler.java b/Emulator/src/main/java/com/eu/habbo/networking/gameserver/crypto/WsHandshakeHandler.java index 864498dc..0947dc03 100644 --- a/Emulator/src/main/java/com/eu/habbo/networking/gameserver/crypto/WsHandshakeHandler.java +++ b/Emulator/src/main/java/com/eu/habbo/networking/gameserver/crypto/WsHandshakeHandler.java @@ -3,6 +3,7 @@ package com.eu.habbo.networking.gameserver.crypto; import com.eu.habbo.Emulator; import com.eu.habbo.networking.gameserver.GameServerAttributes; import io.netty.buffer.ByteBuf; +import io.netty.buffer.Unpooled; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelInboundHandlerAdapter; import io.netty.channel.ChannelPipeline; @@ -118,7 +119,7 @@ public class WsHandshakeHandler extends ChannelInboundHandlerAdapter { LOGGER.debug("[ws-crypto] handshake complete for {}", clientAddress(ctx)); } catch (Exception e) { - LOGGER.error("[ws-crypto] handshake failed from " + clientAddress(ctx), e); + LOGGER.warn("[ws-crypto] handshake failed from {} : {}", clientAddress(ctx), friendlyReason(e)); ctx.close(); } finally { in.release(); @@ -131,9 +132,21 @@ public class WsHandshakeHandler extends ChannelInboundHandlerAdapter { return String.valueOf(ctx.channel().remoteAddress()); } + private static String friendlyReason(Throwable t) { + if (t == null) return "unknown"; + String name = t.getClass().getSimpleName(); + String msg = t.getMessage(); + return (msg == null || msg.isEmpty()) ? name : name + ": " + msg; + } + @Override public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) { - LOGGER.error("[ws-crypto] handshake handler error", cause); + if (cause instanceof java.io.IOException) { + LOGGER.debug("[ws-crypto] client disconnected during handshake ({}): {}", + clientAddress(ctx), friendlyReason(cause)); + } else { + LOGGER.error("[ws-crypto] handshake handler error from " + clientAddress(ctx), cause); + } ctx.close(); } } diff --git a/Emulator/src/main/java/com/eu/habbo/networking/gameserver/decoders/GameByteDecoder.java b/Emulator/src/main/java/com/eu/habbo/networking/gameserver/decoders/GameByteDecoder.java index e905eeea..f0212c4b 100644 --- a/Emulator/src/main/java/com/eu/habbo/networking/gameserver/decoders/GameByteDecoder.java +++ b/Emulator/src/main/java/com/eu/habbo/networking/gameserver/decoders/GameByteDecoder.java @@ -2,7 +2,6 @@ package com.eu.habbo.networking.gameserver.decoders; import com.eu.habbo.messages.ClientMessage; import io.netty.buffer.ByteBuf; -import io.netty.buffer.Unpooled; import io.netty.channel.ChannelHandlerContext; import io.netty.handler.codec.ByteToMessageDecoder; @@ -12,8 +11,7 @@ public class GameByteDecoder extends ByteToMessageDecoder { @Override protected void decode(ChannelHandlerContext ctx, ByteBuf in, List out) { short header = in.readShort(); - ByteBuf body = Unpooled.copiedBuffer(in.readBytes(in.readableBytes())); - + ByteBuf body = in.readBytes(in.readableBytes()); out.add(new ClientMessage(header, body)); } } \ No newline at end of file diff --git a/Latest_Compiled_Version/Habbo-4.1.2-jar-with-dependencies.jar b/Latest_Compiled_Version/Habbo-4.1.2-jar-with-dependencies.jar index e6311f33..fa1e80db 100644 Binary files a/Latest_Compiled_Version/Habbo-4.1.2-jar-with-dependencies.jar and b/Latest_Compiled_Version/Habbo-4.1.2-jar-with-dependencies.jar differ