Fix continuing to process TOSERVER_INIT2 even if player doesn't exist
authorPerttu Ahola <celeron55@gmail.com>
Sat, 14 Apr 2012 15:46:10 +0000 (18:46 +0300)
committerPerttu Ahola <celeron55@gmail.com>
Sat, 14 Apr 2012 15:46:10 +0000 (18:46 +0300)
src/server.cpp

index b0a0fb6fdca3a01474bb3fe56b8831cfe86981b7..522916a2f4224080073e3dfd425a5b4dbbdc7aff 100644 (file)
@@ -2176,6 +2176,12 @@ void Server::ProcessData(u8 *data, u32 datasize, u16 peer_id)
                verbosestream<<"Server: Got TOSERVER_INIT2 from "
                                <<peer_id<<std::endl;
 
+               Player *player = m_env->getPlayer(peer_id);
+               if(!player){
+                       verbosestream<<"Server: TOSERVER_INIT2: "
+                                       <<"Player not found; ignoring."<<std::endl;
+                       return;
+               }
 
                getClient(peer_id)->serialization_version
                                = getClient(peer_id)->pending_serialization_version;
@@ -2203,8 +2209,6 @@ void Server::ProcessData(u8 *data, u32 datasize, u16 peer_id)
                UpdateCrafting(peer_id);
                SendInventory(peer_id);
                
-               Player *player = m_env->getPlayer(peer_id);
-
                // Send HP
                SendPlayerHP(peer_id);