Always allocate the socket closed tcs

This commit is contained in:
David Fowler 2016-07-15 00:58:59 -07:00
parent 142685c0fb
commit 14717f2a3f
1 changed files with 4 additions and 9 deletions

View File

@ -35,7 +35,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Internal.Http
private FilteredStreamAdapter _filteredStreamAdapter; private FilteredStreamAdapter _filteredStreamAdapter;
private Task _readInputTask; private Task _readInputTask;
private TaskCompletionSource<object> _socketClosedTcs; private TaskCompletionSource<object> _socketClosedTcs = new TaskCompletionSource<object>();
private BufferSizeControl _bufferSizeControl; private BufferSizeControl _bufferSizeControl;
public Connection(ListenerContext context, UvStreamHandle socket) : base(context) public Connection(ListenerContext context, UvStreamHandle socket) : base(context)
@ -127,13 +127,8 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Internal.Http
public Task StopAsync() public Task StopAsync()
{ {
if (_socketClosedTcs == null) _frame.Stop();
{ _frame.SocketInput.CompleteAwaiting();
_socketClosedTcs = new TaskCompletionSource<object>();
_frame.Stop();
_frame.SocketInput.CompleteAwaiting();
}
return _socketClosedTcs.Task; return _socketClosedTcs.Task;
} }
@ -168,7 +163,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Internal.Http
SocketInput.Dispose(); SocketInput.Dispose();
} }
_socketClosedTcs?.TrySetResult(null); _socketClosedTcs.TrySetResult(null);
} }
private void ApplyConnectionFilter() private void ApplyConnectionFilter()