Sync login state on channel change (#323)

This commit is contained in:
MedicOP authored and Ronan Lana committed 2019-01-13 22:20:05 -02:00
1 parent 21f2713300
commit f5e58f2d4f
1 file changed
+6 -1
@@ -122,7 +122,6 @@ public final class PlayerLoggedinHandler extends AbstractMaplePacketHandler {
c.setPlayer(player);
c.setAccID(player.getAccountID());
int state = c.getLoginState();
boolean allowLogin = true;
World world = server.getWorld(c.getWorld());
@@ -158,12 +157,18 @@ public final class PlayerLoggedinHandler extends AbstractMaplePacketHandler {
}
*/
c.lockClient(); // Sync this to prevent wrong login state for double channel changes
try {
int state = c.getLoginState();
if (state != MapleClient.LOGIN_SERVER_TRANSITION || !allowLogin) {
c.setPlayer(null);
c.announce(MaplePacketCreator.getAfterLoginError(7));
return;
}
c.updateLoginState(MapleClient.LOGIN_LOGGEDIN);
} finally {
c.unlockClient();
}
cserv.addPlayer(player);
world.addPlayer(player);