From 5651bee2b52854797868545577c920976b6c5628 Mon Sep 17 00:00:00 2001 From: P0nk Date: Wed, 23 Jun 2021 19:03:54 +0200 Subject: [PATCH] Move client transition state and hostAddress to fields --- src/main/java/client/MapleClient.java | 27 +++++++++++++++++++++-- src/main/java/net/MapleServerHandler.java | 2 +- 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/src/main/java/client/MapleClient.java b/src/main/java/client/MapleClient.java index 2641c45359..d0657975dc 100644 --- a/src/main/java/client/MapleClient.java +++ b/src/main/java/client/MapleClient.java @@ -62,6 +62,7 @@ import tools.data.input.GenericSeekableLittleEndianAccessor; import javax.script.ScriptEngine; import java.io.IOException; import java.net.InetAddress; +import java.net.InetSocketAddress; import java.nio.charset.StandardCharsets; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; @@ -81,7 +82,10 @@ public class MapleClient extends ChannelInboundHandlerAdapter { public static final String CLIENT_HWID = "HWID"; public static final String CLIENT_NIBBLEHWID = "HWID2"; public static final String CLIENT_REMOTE_ADDRESS = "REMOTE_IP"; - public static final String CLIENT_TRANSITION = "TRANSITION"; + + private String hostAddress; + private volatile boolean inTransition; + private MapleAESOFB send; private MapleAESOFB receive; private final IoSession session; @@ -143,6 +147,17 @@ public class MapleClient extends ChannelInboundHandlerAdapter { this.session = session; } + @Override + public void channelActive(ChannelHandlerContext ctx) { + String hostAddress = "null"; + try { + hostAddress = ((InetSocketAddress) ctx.channel().remoteAddress()).getAddress().getHostAddress(); + } catch (NullPointerException npe) { + log.warn("Unable to get remote address for client", npe); + } + this.hostAddress = hostAddress; + } + @Override public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception { // InPacket packet = new ByteBufInPacket((ByteBuf) msg); @@ -191,6 +206,14 @@ public class MapleClient extends ChannelInboundHandlerAdapter { return session; } + public String getHostAddress() { + return hostAddress; + } + + public boolean isInTransition() { + return inTransition; + } + public EventManager getEventManager(String event) { return getChannelServer().getEventSM().getEventManager(event); } @@ -997,7 +1020,7 @@ public class MapleClient extends ChannelInboundHandlerAdapter { public void setCharacterOnSessionTransitionState(int cid) { this.updateLoginState(MapleClient.LOGIN_SERVER_TRANSITION); - session.setAttribute(MapleClient.CLIENT_TRANSITION); + this.inTransition = true; Server.getInstance().setCharacteridInTransition(this, cid); } diff --git a/src/main/java/net/MapleServerHandler.java b/src/main/java/net/MapleServerHandler.java index 554366803d..3a6afca5da 100644 --- a/src/main/java/net/MapleServerHandler.java +++ b/src/main/java/net/MapleServerHandler.java @@ -154,7 +154,7 @@ public class MapleServerHandler extends IoHandlerAdapter { if (client != null) { try { // client freeze issues on session transition states found thanks to yolinlin, Omo Oppa, Nozphex - if (!session.containsAttribute(MapleClient.CLIENT_TRANSITION)) { + if (!client.isInTransition()) { client.disconnect(false, false); } } catch (Throwable t) {