Jump to content
  • 0

Double Login Session Bug.


kenzoR

Question

10 answers to this question

Recommended Posts

  • 0

SweeTs with this fix, after one login in your char ,and logout you cant login again in your char... Something bad in this code..  I cant find good fix... Im added this... Its good with login, logout... But bugg is still working. Maybe someone know where in there can be mistake ? :(

    public boolean addGameServerLogin(String account, L2GameClient client)  {
        
           L2GameClient savedClient = _accountsInGameServer.get(account);
          
                   if (savedClient != null) {
                   if (savedClient.isDetached()) {
                   if (Config.DEBUG)
                   _log.info("Old Client was disconnected: Offline or OfflineMode --> Login Again");
                   ((FastMap<String, L2GameClient>) _accountsInGameServer).put(account, client);
                   return true;
                   }
                   if (Config.DEBUG)
                   _log.info("Old Client was online --> Close Old Client Connection");
                   savedClient.closeNow();
                   _accountsInGameServer.remove(account);
                   return false;
                   }
                   if (Config.DEBUG)
                   _log.info("Client was not online --> New Client Connection");
                   ((FastMap<String, L2GameClient>) _accountsInGameServer).put(account, client);
                   return true;
                   }
}





    L2GameClient savedClient = _accountsInGameServer.get(account);

    if (savedClient != null) {
        if (savedClient.isDetached()) {
            _log.info("Old Client was disconnected: Offline or OfflineMode --> Login Again [Account: " + account + "]");
            ((FastMap<String, L2GameClient>) _accountsInGameServer).put(
                    account, client);
            return true;
        } else {
            _log.info("Old Client was online --> Close Old Client Connection [Account: " + account + "]");
            savedClient.closeNow();
            _accountsInGameServer.remove(account);
            return false;
        }
    } else {
        _log.info("Client was not online --> New Client Connection [Account: " + account + "]");
        ((FastMap<String, L2GameClient>) _accountsInGameServer).put(
                account, client);
        return true;
    }





IN THIS CODE "ELSE" anything mean or no ? Becouse with else i get yellow code... ???

Edited by koksas
Link to comment
Share on other sites

  • 0

authlogin founded in l2jserver

// avoid potential exploits
if (client.getAccountName() == null)
{
 // Preventing duplicate login in case client login server socket was disconnected or this packet was not sent yet
if (LoginServerThread.getInstance().addGameServerLogin(_loginName, client))
{
 client.setAccountName(_loginName);
 LoginServerThread.getInstance().addWaitingClientAndSendRequest(_loginName, client, key);
}
else
{
 client.close((L2GameServerPacket) null);
 }

+    public boolean addGameServerLogin(String account, L2GameClient client) {
+
+        L2GameClient savedClient = _accountsInGameServer.get(account);
+
+        if (savedClient != null) {
+            if (savedClient.isDetached()) {
+                LOGGER.debug("Old Client was disconnected: Offline or OfflineMode --> Login Again [Account: " + account + "]");
+                ((FastMap<String, L2GameClient>) _accountsInGameServer).put(
+                        account, client);
+                return true;
+            } else {
+                LOGGER.debug("Old Client was online --> Close Old Client Connection [Account: " + account + "]");
+                savedClient.closeNow();
+                _accountsInGameServer.remove(account);
+                return false;
+            }
+        } else {
+            LOGGER.debug("Client was not online --> New Client Connection [Account: " + account + "]");
+            ((FastMap<String, L2GameClient>) _accountsInGameServer).put(
+                    account, client);
+            return true;
+        }
+    }

well i found this in the gta version of frozen.. i dont have idea if this works

 

 

also this 

public boolean addGameServerLogin(String account, L2GameClient client) 
 { 
 return _accountsInGameServer.putIfAbsent(account, client) == null; 
}
Edited by te0x
Link to comment
Share on other sites

Guest
This topic is now closed to further replies.


×
×
  • Create New...