aboutsummaryrefslogtreecommitdiff
path: root/src/server/shared
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2015-04-04 23:07:16 +0100
committerDDuarte <dnpd.dd@gmail.com>2015-04-04 23:07:41 +0100
commit548aa119ac2884bb1c34f80e2fb077a66bcdfd9f (patch)
tree476b6c5d88de07a8c2bf9516a34725e3c08577e3 /src/server/shared
parent0df5cb972d8204e9b5058c8734efc26a520fd869 (diff)
Core/Networking: Fixed unsafe access to _worldSession member in WorldSocket
(cherry picked from commit bed88e0dd475af5b73cea03821f7fb7cb9ddce9d) Core/Networking: Fixed deadlock in HandlePing if the client is about to be kicked for overspeed pings (cherry picked from commit 3da0f7e40920b652d2222fa88dbb4b516d24725d) Core/Networking: Cleanup CloseSocket calls from read failures in WorldSocket (cherry picked from commit 18343a7309fbf53a3509749c0a5ca1f8ea273c57) Conflicts: src/server/game/Server/WorldSocket.cpp Ref #14474
Diffstat (limited to 'src/server/shared')
-rw-r--r--src/server/shared/Networking/Socket.h6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/server/shared/Networking/Socket.h b/src/server/shared/Networking/Socket.h
index f7a1b954cb0..396d4bb3aab 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<std::mutex> guard(_writeLock, std::try_to_lock);
+ std::unique_lock<std::mutex> 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<std::mutex>&)