From f43b65cf53274d1bbb43e2041ce72ff9eb68a7c8 Mon Sep 17 00:00:00 2001 From: faketruth Date: Fri, 9 Mar 2012 13:42:28 +0000 Subject: cClientHandles have a unique ID now to distinguish them cAuthenticator uses unique client ID for authentication Changed the kick function used by cAuthenticator to take a client ID instead of name, so the correct user is kicked Using callback reference instead of pointer in GetChunkData and affiliates GetChunkData returns false when failed, and true when succeeded Renamed entity type enums to something prettier Exposed some functions to Lua git-svn-id: http://mc-server.googlecode.com/svn/trunk@388 0a769ca7-a7f5-676a-18bf-c427514a06d6 --- source/cClientHandle.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'source/cClientHandle.cpp') diff --git a/source/cClientHandle.cpp b/source/cClientHandle.cpp index c722b4305..cf6c3fb5f 100644 --- a/source/cClientHandle.cpp +++ b/source/cClientHandle.cpp @@ -84,6 +84,12 @@ +int cClientHandle::s_ClientCount = 0; + + + + + /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // cClientHandle: @@ -104,7 +110,11 @@ cClientHandle::cClientHandle(const cSocket & a_Socket, int a_ViewDistance) , m_State(csConnected) , m_LastStreamedChunkX(0x7fffffff) // bogus chunk coords to force streaming upon login , m_LastStreamedChunkZ(0x7fffffff) + , m_UniqueID(0) { + s_ClientCount++; // Not protected by CS because clients are always constructed from the same thread + m_UniqueID = s_ClientCount; + cTimer t1; m_LastPingTime = t1.GetNowTime(); @@ -696,7 +706,7 @@ void cClientHandle::HandleLogin(cPacket_Login * a_Packet) // Schedule for authentication; until then, let them wait (but do not block) m_State = csAuthenticating; - cRoot::Get()->GetAuthenticator().Authenticate(m_Username, cRoot::Get()->GetServer()->GetServerID()); + cRoot::Get()->GetAuthenticator().Authenticate(GetUniqueID(), GetUsername(), cRoot::Get()->GetServer()->GetServerID()); } -- cgit v1.2.3