diff options
Diffstat (limited to 'src/engine/server')
| -rw-r--r-- | src/engine/server/server.cpp | 24 | ||||
| -rw-r--r-- | src/engine/server/server.h | 1 |
2 files changed, 24 insertions, 1 deletions
diff --git a/src/engine/server/server.cpp b/src/engine/server/server.cpp index 6bcffae3..37c6f430 100644 --- a/src/engine/server/server.cpp +++ b/src/engine/server/server.cpp @@ -797,6 +797,22 @@ void CServer::DoSnapshot() GameServer()->OnPostSnap(); } +int CServer::NewClientNoAuthCallback(int ClientID, void *pUser) +{ + CServer *pThis = (CServer *)pUser; + pThis->m_aClients[ClientID].m_State = CClient::STATE_CONNECTING; + pThis->m_aClients[ClientID].m_aName[0] = 0; + pThis->m_aClients[ClientID].m_aClan[0] = 0; + pThis->m_aClients[ClientID].m_Country = -1; + pThis->m_aClients[ClientID].m_Authed = AUTHED_NO; + pThis->m_aClients[ClientID].m_AuthTries = 0; + pThis->m_aClients[ClientID].m_pRconCmdToSend = 0; + pThis->m_aClients[ClientID].Reset(); + + pThis->SendMap(ClientID); + + return 0; +} int CServer::NewClientCallback(int ClientID, void *pUser) { @@ -1454,7 +1470,7 @@ int CServer::Run() return -1; } - m_NetServer.SetCallbacks(NewClientCallback, DelClientCallback, this); + m_NetServer.SetCallbacks(NewClientCallback, NewClientNoAuthCallback, DelClientCallback, this); m_Econ.Init(Console(), &m_ServerBan); @@ -2261,6 +2277,12 @@ int main(int argc, const char **argv) // ignore_convention } #endif + if(secure_random_init() != 0) + { + dbg_msg("secure", "could not initialize secure RNG"); + return -1; + } + CServer *pServer = CreateServer(); IKernel *pKernel = IKernel::Create(); diff --git a/src/engine/server/server.h b/src/engine/server/server.h index 9b3ac371..23c6ae5e 100644 --- a/src/engine/server/server.h +++ b/src/engine/server/server.h @@ -223,6 +223,7 @@ public: void DoSnapshot(); static int NewClientCallback(int ClientID, void *pUser); + static int NewClientNoAuthCallback(int ClientID, void *pUser); static int DelClientCallback(int ClientID, const char *pReason, void *pUser); void SendMap(int ClientID); |