aboutsummaryrefslogtreecommitdiff
path: root/src/server/shared
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2024-04-03 21:23:30 +0200
committerOvahlord <dreadkiller@gmx.de>2024-05-28 16:33:14 +0200
commit03d40c8afe26cbed5b693be36b9dafe3189bf4a5 (patch)
treebd5e0a090bfdbacfc4dac2ea76207a28bbc58b12 /src/server/shared
parent3bba97dd528acd539649b514152dd06f7789cbc1 (diff)
Core/Networking: Fixed Socket::DelayedCloseSocket not working if write queue is empty when its called on linux and mac
Closes #29887 (cherry picked from commit f847cd4eeb8ce0d537ef793d8926cf28650724c4)
Diffstat (limited to 'src/server/shared')
-rw-r--r--src/server/shared/Networking/Socket.h9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/server/shared/Networking/Socket.h b/src/server/shared/Networking/Socket.h
index 511f94ed366..40f5820da92 100644
--- a/src/server/shared/Networking/Socket.h
+++ b/src/server/shared/Networking/Socket.h
@@ -164,7 +164,14 @@ public:
}
/// Marks the socket for closing after write buffer becomes empty
- void DelayedCloseSocket() { _closing = true; }
+ void DelayedCloseSocket()
+ {
+ if (_closing.exchange(true))
+ return;
+
+ if (_writeQueue.empty())
+ CloseSocket();
+ }
MessageBuffer& GetReadBuffer() { return _readBuffer; }