[Fix] Lock it early

master
sta 10 years ago
parent 655acc6528
commit 83a07a988d

@ -560,7 +560,11 @@ namespace WebSocketSharp.Net
if (!_listening) if (!_listening)
throw new InvalidOperationException ("The listener hasn't been started."); throw new InvalidOperationException ("The listener hasn't been started.");
// Lock _waitQueue early to avoid race conditions. // Lock _ctxRegistrySync early to avoid race conditions.
lock (_ctxRegistrySync) {
if (!_listening)
throw new InvalidOperationException ("The listener is stopped/closed.");
lock (_waitQueueSync) { lock (_waitQueueSync) {
var ctx = getContextFromQueue (); var ctx = getContextFromQueue ();
if (ctx != null) { if (ctx != null) {
@ -570,6 +574,7 @@ namespace WebSocketSharp.Net
_waitQueue.Add (asyncResult); _waitQueue.Add (asyncResult);
} }
}
return asyncResult; return asyncResult;
} }

Loading…
Cancel
Save