summaryrefslogtreecommitdiffstats
path: root/src/ClientHandle.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/ClientHandle.cpp')
-rw-r--r--src/ClientHandle.cpp11
1 files changed, 8 insertions, 3 deletions
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