diff options
author | Nay <dnpd.dd@gmail.com> | 2013-09-01 15:52:57 -0700 |
---|---|---|
committer | Nay <dnpd.dd@gmail.com> | 2013-09-01 15:52:57 -0700 |
commit | 69a0800cb7a6edfbffd3b007e4945dc8db5a5832 (patch) | |
tree | a78e726944f86cbc9e38894e4bd1b8009ec1f7c7 /src | |
parent | 68b447b24c659cc13a5c49bdea641808d3884ad4 (diff) | |
parent | f23b5fb96d46cc2eac3aa069a4d1a2aa0df16117 (diff) |
Merge pull request #10696 from jackpoz/socket_race_condition
Core/Socket: Fix race condition in WorldSocket
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Server/WorldSocket.cpp | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/server/game/Server/WorldSocket.cpp b/src/server/game/Server/WorldSocket.cpp index 625ebff8471..508fc0351a9 100644 --- a/src/server/game/Server/WorldSocket.cpp +++ b/src/server/game/Server/WorldSocket.cpp @@ -445,9 +445,15 @@ int WorldSocket::Update (void) if (closing_) return -1; - if (m_OutActive || (m_OutBuffer->length() == 0 && msg_queue()->is_empty())) + if (m_OutActive) return 0; + { + ACE_GUARD_RETURN (LockType, Guard, m_OutBufferLock, 0); + if (m_OutBuffer->length() == 0 && msg_queue()->is_empty()) + return 0; + } + int ret; do ret = handle_output(get_handle()); |