]> git.lizzy.rs Git - dragonfireclient.git/commitdiff
Check for duplicate login in TOSERVER_INIT handler (#11017)
authorElias Fleckenstein <54945686+EliasFleckenstein03@users.noreply.github.com>
Fri, 19 Mar 2021 20:45:29 +0000 (21:45 +0100)
committerGitHub <noreply@github.com>
Fri, 19 Mar 2021 20:45:29 +0000 (21:45 +0100)
i.e. checks for duplicate logins before sending all media data to the client.

src/network/serverpackethandler.cpp

index b863e182823309545d7a33d0a3ab9f9bde906878..5b378a0832b5c17849e1ec1ab7ef26e21ab6e6f7 100644 (file)
@@ -174,6 +174,16 @@ void Server::handleCommand_Init(NetworkPacket* pkt)
                return;
        }
 
+       RemotePlayer *player = m_env->getPlayer(playername);
+
+       // If player is already connected, cancel
+       if (player && player->getPeerId() != PEER_ID_INEXISTENT) {
+               actionstream << "Server: Player with name \"" << playername <<
+                       "\" tried to connect, but player with same name is already connected" << std::endl;
+               DenyAccess(peer_id, SERVER_ACCESSDENIED_ALREADY_CONNECTED);
+               return;
+       }
+
        m_clients.setPlayerName(peer_id, playername);
        //TODO (later) case insensitivity