From dacc11b8eafe69931ae641bd210c40fc54238f67 Mon Sep 17 00:00:00 2001 From: Shauren Date: Wed, 3 Apr 2024 21:23:30 +0200 Subject: 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) --- src/server/shared/Networking/Socket.h | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'src/server/shared/Networking') diff --git a/src/server/shared/Networking/Socket.h b/src/server/shared/Networking/Socket.h index 9e4b9d36c60..289e02513ca 100644 --- a/src/server/shared/Networking/Socket.h +++ b/src/server/shared/Networking/Socket.h @@ -127,7 +127,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; } -- cgit v1.2.3