1
0

Not sending multiple DC packets to the client.

git-svn-id: http://mc-server.googlecode.com/svn/trunk@1120 0a769ca7-a7f5-676a-18bf-c427514a06d6
This commit is contained in:
madmaxoft@gmail.com 2013-01-05 19:05:15 +00:00
parent 412c21a22c
commit 2e64b2e5f5
2 changed files with 11 additions and 7 deletions

View File

@ -79,7 +79,7 @@ cClientHandle::cClientHandle(const cSocket * a_Socket, int a_ViewDistance)
, m_IPString(a_Socket->GetIPString()) , m_IPString(a_Socket->GetIPString())
, m_OutgoingData(64 KiB) , m_OutgoingData(64 KiB)
, m_Player(NULL) , m_Player(NULL)
, m_bKicking(false) , m_HasSentDC(false)
, m_TimeSinceLastPacket(0) , m_TimeSinceLastPacket(0)
, m_bKeepThreadGoing(true) , m_bKeepThreadGoing(true)
, m_Ping(1000) , m_Ping(1000)
@ -140,7 +140,7 @@ cClientHandle::~cClientHandle()
} }
} }
if (!m_bKicking) if (!m_HasSentDC)
{ {
SendDisconnect("Server shut down? Kthnxbai"); SendDisconnect("Server shut down? Kthnxbai");
} }
@ -200,7 +200,6 @@ void cClientHandle::Kick(const AString & a_Reason)
LOG("Kicking user \"%s\" for \"%s\"", m_Username.c_str(), a_Reason.c_str()); LOG("Kicking user \"%s\" for \"%s\"", m_Username.c_str(), a_Reason.c_str());
} }
SendDisconnect(a_Reason); SendDisconnect(a_Reason);
m_bKicking = true;
} }
@ -1151,8 +1150,12 @@ void cClientHandle::Tick(float a_Dt)
void cClientHandle::SendDisconnect(const AString & a_Reason) void cClientHandle::SendDisconnect(const AString & a_Reason)
{ {
if (!m_HasSentDC)
{
LOGD("Sending a DC: \"%s\"", a_Reason.c_str()); LOGD("Sending a DC: \"%s\"", a_Reason.c_str());
m_Protocol->SendDisconnect(a_Reason); m_Protocol->SendDisconnect(a_Reason);
m_HasSentDC = true;
}
} }
@ -1768,7 +1771,7 @@ void cClientHandle::GetOutgoingData(AString & a_Data)
} }
// Disconnect player after all packets have been sent // Disconnect player after all packets have been sent
if (m_bKicking && a_Data.empty()) if (m_HasSentDC && a_Data.empty())
{ {
Destroy(); Destroy();
} }

View File

@ -204,7 +204,8 @@ private:
Vector3d m_ConfirmPosition; Vector3d m_ConfirmPosition;
cPlayer * m_Player; cPlayer * m_Player;
bool m_bKicking;
bool m_HasSentDC;
// Chunk position when the last StreamChunks() was called; used to avoid re-streaming while in the same chunk // Chunk position when the last StreamChunks() was called; used to avoid re-streaming while in the same chunk
int m_LastStreamedChunkX; int m_LastStreamedChunkX;