diff options
author | Tiger Wang <ziwei.tiger@outlook.com> | 2021-03-28 22:20:13 +0200 |
---|---|---|
committer | Tiger Wang <ziwei.tiger@outlook.com> | 2021-03-28 22:20:13 +0200 |
commit | abcc14076cc0792644d7e3abf434421369f03a75 (patch) | |
tree | a7d3cb18181d5a5473b007d192bf3e4989a96289 /src | |
parent | Send keep alives slightly less frequently (diff) | |
download | cuberite-abcc14076cc0792644d7e3abf434421369f03a75.tar cuberite-abcc14076cc0792644d7e3abf434421369f03a75.tar.gz cuberite-abcc14076cc0792644d7e3abf434421369f03a75.tar.bz2 cuberite-abcc14076cc0792644d7e3abf434421369f03a75.tar.lz cuberite-abcc14076cc0792644d7e3abf434421369f03a75.tar.xz cuberite-abcc14076cc0792644d7e3abf434421369f03a75.tar.zst cuberite-abcc14076cc0792644d7e3abf434421369f03a75.zip |
Diffstat (limited to '')
-rw-r--r-- | src/ClientHandle.cpp | 11 | ||||
-rw-r--r-- | src/Entities/Player.cpp | 6 |
2 files changed, 11 insertions, 6 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 diff --git a/src/Entities/Player.cpp b/src/Entities/Player.cpp index 7d8c3a191..59291e40d 100644 --- a/src/Entities/Player.cpp +++ b/src/Entities/Player.cpp @@ -3075,14 +3075,14 @@ void cPlayer::OnRemoveFromWorld(cWorld & a_World) AwardAchievement(Statistic::AchPortal); } + // Clientside warp start: + m_ClientHandle->SendRespawn(DestinationDimension, false); + // Clear sent chunk lists from the clienthandle: m_ClientHandle->RemoveFromWorld(); // The clienthandle caches the coords of the chunk we're standing at. Invalidate this. m_ClientHandle->InvalidateCachedSentChunk(); - - // Clientside warp start: - m_ClientHandle->SendRespawn(DestinationDimension, false); } |