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);
Post(t => t.AllowStop()); try
if (!await WaitAsync(_threadTcs.Task, stepTimeout).ConfigureAwait(false))
{ {
try Post(t => t.AllowStop());
if (!await WaitAsync(_threadTcs.Task, stepTimeout).ConfigureAwait(false))
{ {
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,12 +117,12 @@ 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)) _log.LogCritical($"{nameof(LibuvThread)}.{nameof(StopAsync)} failed to terminate libuv thread.");
{
_log.LogCritical($"{nameof(LibuvThread)}.{nameof(StopAsync)} failed to terminate libuv thread.");
}
} }
} }
} }