summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTiger Wang <ziwei.tiger@outlook.com>2021-03-30 00:36:00 +0200
committerGitHub <noreply@github.com>2021-03-30 00:36:00 +0200
commit8ec555299873712d03c76f705e5bfe7ade01da4d (patch)
treeb6cbc6a4f42171a8dba5714b95c67086f6a95fb3
parentCall ProcessProtocolOut at opportune times (diff)
downloadcuberite-8ec555299873712d03c76f705e5bfe7ade01da4d.tar
cuberite-8ec555299873712d03c76f705e5bfe7ade01da4d.tar.gz
cuberite-8ec555299873712d03c76f705e5bfe7ade01da4d.tar.bz2
cuberite-8ec555299873712d03c76f705e5bfe7ade01da4d.tar.lz
cuberite-8ec555299873712d03c76f705e5bfe7ade01da4d.tar.xz
cuberite-8ec555299873712d03c76f705e5bfe7ade01da4d.tar.zst
cuberite-8ec555299873712d03c76f705e5bfe7ade01da4d.zip
-rw-r--r--src/ClientHandle.cpp19
1 files changed, 14 insertions, 5 deletions
diff --git a/src/ClientHandle.cpp b/src/ClientHandle.cpp
index 04436070c..5762de897 100644
--- a/src/ClientHandle.cpp
+++ b/src/ClientHandle.cpp
@@ -232,6 +232,13 @@ void cClientHandle::ProcessProtocolOut()
decltype(m_OutgoingData) OutgoingData;
{
cCSLock Lock(m_CSOutgoingData);
+
+ // Bail out when there's nothing to send to avoid TCPLink::Send overhead:
+ if (m_OutgoingData.empty())
+ {
+ return;
+ }
+
std::swap(OutgoingData, m_OutgoingData);
}
@@ -3318,12 +3325,14 @@ void cClientHandle::ProcessProtocolIn(void)
decltype(m_IncomingData) IncomingData;
{
cCSLock Lock(m_CSIncomingData);
- std::swap(IncomingData, m_IncomingData);
- }
- if (IncomingData.empty())
- {
- return;
+ // Bail out when nothing was received:
+ if (m_IncomingData.empty())
+ {
+ return;
+ }
+
+ std::swap(IncomingData, m_IncomingData);
}
try