ByteBuf mem-leak fix, ChannelEventHandler.java:
Code:
@Override
protected void channelRead0(ChannelHandlerContext ctx, Object msg) throws Exception {
try {
PlayerSession session = ctx.channel().attr(NetworkConstants.SESSION_KEY).get();
if (session == null) {
throw new IllegalStateException("session == null");
}
if(msg instanceof LoginDetailsMessage) {
session.finalizeLogin((LoginDetailsMessage)msg);
} else if(msg instanceof Packet) {
session.queuePacket((Packet)msg);
}
} catch(Exception e) {
e.printStackTrace();
} finally {
ReferenceCountUtil.release(msg);
}
}
PlayerSession.java:
Code:
public void processPacket(Packet packet) {
try {
PacketConstants.PACKETS[packet.getOpcode()].handleMessage(player, packet);
} finally {
packet.getBuffer().release();
}
}