aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorNay <dnpd.dd@gmail.com>2013-09-01 15:52:57 -0700
committerNay <dnpd.dd@gmail.com>2013-09-01 15:52:57 -0700
commit69a0800cb7a6edfbffd3b007e4945dc8db5a5832 (patch)
treea78e726944f86cbc9e38894e4bd1b8009ec1f7c7 /src
parent68b447b24c659cc13a5c49bdea641808d3884ad4 (diff)
parentf23b5fb96d46cc2eac3aa069a4d1a2aa0df16117 (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.cpp8
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());