Fix potential race in LibuvThread.StopAsync (#1756)

This commit is contained in:
Stephen Halter 2017-04-24 16:47:48 -07:00 committed by GitHub
parent a98581670e
commit c22f8f5c59
1 changed files with 8 additions and 8 deletions

View File

@ -102,10 +102,10 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Transport.Libuv.Internal
{ {
var stepTimeout = TimeSpan.FromTicks(timeout.Ticks / 3); var stepTimeout = TimeSpan.FromTicks(timeout.Ticks / 3);
try
{
Post(t => t.AllowStop()); Post(t => t.AllowStop());
if (!await WaitAsync(_threadTcs.Task, stepTimeout).ConfigureAwait(false)) if (!await WaitAsync(_threadTcs.Task, stepTimeout).ConfigureAwait(false))
{
try
{ {
Post(t => t.OnStopRude()); Post(t => t.OnStopRude());
if (!await WaitAsync(_threadTcs.Task, stepTimeout).ConfigureAwait(false)) if (!await WaitAsync(_threadTcs.Task, stepTimeout).ConfigureAwait(false))
@ -117,6 +117,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Transport.Libuv.Internal
} }
} }
} }
}
catch (ObjectDisposedException) catch (ObjectDisposedException)
{ {
if (!await WaitAsync(_threadTcs.Task, stepTimeout).ConfigureAwait(false)) if (!await WaitAsync(_threadTcs.Task, stepTimeout).ConfigureAwait(false))
@ -125,7 +126,6 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Transport.Libuv.Internal
} }
} }
} }
}
if (_closeError != null) if (_closeError != null)
{ {