1.1 --- a/core/PlayerManager.cpp Sat Apr 12 02:11:16 2008 +0000
1.2 +++ b/core/PlayerManager.cpp Sat Apr 12 02:18:03 2008 +0000
1.3 @@ -134,6 +134,9 @@
1.4 PreAdminCheck = g_Forwards.CreateForward("OnClientPreAdminCheck", ET_Event, 1, p1);
1.5 PostAdminCheck = g_Forwards.CreateForward("OnClientPostAdminCheck", ET_Ignore, 1, p1);
1.6 PostAdminFilter = g_Forwards.CreateForward("OnClientPostAdminFilter", ET_Ignore, 1, p1);
1.7 +
1.8 + m_bIsListenServer = !engine->IsDedicatedServer();
1.9 + m_ListenClient = 0;
1.10 }
1.11
1.12 void PlayerManager::OnSourceModShutdown()
1.13 @@ -385,7 +388,9 @@
1.14 {
1.15 m_AuthQueue[++m_AuthQueue[0]] = client;
1.16 }
1.17 - } else {
1.18 + }
1.19 + else
1.20 + {
1.21 RETURN_META_VALUE(MRES_SUPERCEDE, false);
1.22 }
1.23
1.24 @@ -415,6 +420,13 @@
1.25 }
1.26 }
1.27
1.28 + if (!pPlayer->IsFakeClient()
1.29 + && m_bIsListenServer
1.30 + && strncmp(pszAddress, "127.0.0.1", 9) == 0)
1.31 + {
1.32 + m_ListenClient = client;
1.33 + }
1.34 +
1.35 return true;
1.36 }
1.37
1.38 @@ -524,7 +536,9 @@
1.39 {
1.40 m_cldisconnect->PushCell(client);
1.41 m_cldisconnect->Execute(&res, NULL);
1.42 - } else {
1.43 + }
1.44 + else
1.45 + {
1.46 /* We don't care, prevent a double call */
1.47 return;
1.48 }
1.49 @@ -565,6 +579,11 @@
1.50
1.51 m_Players[client].Disconnect();
1.52 m_UserIdLookUp[engine->GetPlayerUserId(pEntity)] = 0;
1.53 +
1.54 + if (m_ListenClient == client)
1.55 + {
1.56 + m_ListenClient = 0;
1.57 + }
1.58 }
1.59
1.60 void PlayerManager::OnClientDisconnect_Post(edict_t *pEntity)