Return SocketInput blocks out of lock

This commit is contained in:
Ben Adams 2016-05-10 01:18:24 +01:00
parent 388841c1d8
commit 0e8cbe5df6
1 changed files with 13 additions and 13 deletions

View File

@ -174,12 +174,12 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Http
public void ConsumingComplete( public void ConsumingComplete(
MemoryPoolIterator consumed, MemoryPoolIterator consumed,
MemoryPoolIterator examined) MemoryPoolIterator examined)
{
lock (_sync)
{ {
MemoryPoolBlock returnStart = null; MemoryPoolBlock returnStart = null;
MemoryPoolBlock returnEnd = null; MemoryPoolBlock returnEnd = null;
lock (_sync)
{
if (!consumed.IsDefault) if (!consumed.IsDefault)
{ {
returnStart = _head; returnStart = _head;
@ -200,6 +200,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Http
_awaitableIsNotCompleted, _awaitableIsNotCompleted,
_awaitableIsCompleted); _awaitableIsCompleted);
} }
}
while (returnStart != returnEnd) while (returnStart != returnEnd)
{ {
@ -213,7 +214,6 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Http
throw new InvalidOperationException("No ongoing consuming operation to complete."); throw new InvalidOperationException("No ongoing consuming operation to complete.");
} }
} }
}
public void CompleteAwaiting() public void CompleteAwaiting()
{ {