From bed88e0dd475af5b73cea03821f7fb7cb9ddce9d Mon Sep 17 00:00:00 2001 From: Shauren Date: Sat, 28 Mar 2015 21:45:27 +0100 Subject: Core/Networking: Fixed unsafe access to _worldSession member in WorldSocket --- src/server/shared/Networking/Socket.h | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'src/server/shared') diff --git a/src/server/shared/Networking/Socket.h b/src/server/shared/Networking/Socket.h index 6482c0ed08a..0ac23a96224 100644 --- a/src/server/shared/Networking/Socket.h +++ b/src/server/shared/Networking/Socket.h @@ -62,7 +62,7 @@ public: return false; #ifndef TC_SOCKET_USE_IOCP - std::unique_lock guard(_writeLock, std::try_to_lock); + std::unique_lock guard(_writeLock); if (!guard) return true; @@ -140,6 +140,8 @@ public: if (shutdownError) TC_LOG_DEBUG("network", "Socket::CloseSocket: %s errored when shutting down socket: %i (%s)", GetRemoteIpAddress().to_string().c_str(), shutdownError.value(), shutdownError.message().c_str()); + + OnClose(); } /// Marks the socket for closing after write buffer becomes empty @@ -148,6 +150,8 @@ public: MessageBuffer& GetReadBuffer() { return _readBuffer; } protected: + virtual void OnClose() { } + virtual void ReadHandler() = 0; bool AsyncProcessQueue(std::unique_lock&) -- cgit v1.2.3