[Modify] Lock it within the method

master
sta 10 years ago
parent 40b74422a2
commit 655acc6528

@ -469,16 +469,17 @@ namespace WebSocketSharp.Net
cleanup (force);
}
// Must be called with a lock on _ctxQueue.
private HttpListenerContext getContextFromQueue ()
{
if (_ctxQueue.Count == 0)
return null;
lock (_ctxQueueSync) {
if (_ctxQueue.Count == 0)
return null;
var ctx = _ctxQueue[0];
_ctxQueue.RemoveAt (0);
var ctx = _ctxQueue[0];
_ctxQueue.RemoveAt (0);
return ctx;
return ctx;
}
}
private void sendServiceUnavailable ()
@ -561,12 +562,10 @@ namespace WebSocketSharp.Net
// Lock _waitQueue early to avoid race conditions.
lock (_waitQueueSync) {
lock (_ctxQueueSync) {
var ctx = getContextFromQueue ();
if (ctx != null) {
asyncResult.Complete (ctx, true);
return asyncResult;
}
var ctx = getContextFromQueue ();
if (ctx != null) {
asyncResult.Complete (ctx, true);
return asyncResult;
}
_waitQueue.Add (asyncResult);

Loading…
Cancel
Save