From abcc14076cc0792644d7e3abf434421369f03a75 Mon Sep 17 00:00:00 2001 From: Tiger Wang Date: Sun, 28 Mar 2021 21:20:13 +0100 Subject: Call ProcessProtocolOut at opportune times --- src/ClientHandle.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'src/ClientHandle.cpp') diff --git a/src/ClientHandle.cpp b/src/ClientHandle.cpp index 0b99cd95c..04436070c 100644 --- a/src/ClientHandle.cpp +++ b/src/ClientHandle.cpp @@ -130,8 +130,9 @@ void cClientHandle::Destroy(void) { cCSLock Lock(m_CSOutgoingData); - m_Link->Shutdown(); // Cleanly close the connection - m_Link.reset(); // Release the strong reference cTCPLink holds to ourself + m_Link->Send(m_OutgoingData.data(), m_OutgoingData.size()); // Flush remaining data. + m_Link->Shutdown(); // Cleanly close the connection. + m_Link.reset(); // Release the strong reference cTCPLink holds to ourself. } } @@ -1933,9 +1934,12 @@ void cClientHandle::RemoveFromWorld(void) m_SentChunks.clear(); } + // Flush outgoing data: + ProcessProtocolOut(); + // No need to send Unload Chunk packets, the client unloads automatically. - // Here, we set last streamed values to bogus ones so everything is resent + // Here, we set last streamed values to bogus ones so everything is resent: m_LastStreamedChunkX = 0x7fffffff; m_LastStreamedChunkZ = 0x7fffffff; } @@ -2105,6 +2109,7 @@ void cClientHandle::Tick(float a_Dt) void cClientHandle::ServerTick(float a_Dt) { ProcessProtocolIn(); + ProcessProtocolOut(); m_TicksSinceLastPacket += 1; if (m_TicksSinceLastPacket > 600) // 30 seconds -- cgit v1.2.3