summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTiger Wang <ziwei.tiger@outlook.com>2021-03-28 22:20:13 +0200
committerTiger Wang <ziwei.tiger@outlook.com>2021-03-28 22:20:13 +0200
commitabcc14076cc0792644d7e3abf434421369f03a75 (patch)
treea7d3cb18181d5a5473b007d192bf3e4989a96289
parentSend keep alives slightly less frequently (diff)
downloadcuberite-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
-rw-r--r--src/ClientHandle.cpp11
-rw-r--r--src/Entities/Player.cpp6
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);
}