Only log connection error once

This commit is contained in:
Ben Adams 2016-01-22 23:34:28 +00:00
parent cd621509d0
commit e5238ff383
1 changed files with 10 additions and 11 deletions

View File

@ -294,12 +294,17 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Http
{ {
lock (_contextLock) lock (_contextLock)
{ {
// Abort the connection for any failed write if (!_cancelled)
// Queued on threadpool so get it in as first op. {
_connection.Abort(); // Abort the connection for any failed write
_cancelled = true; // Queued on threadpool so get it in as first op.
_connection.Abort();
_cancelled = true;
CompleteAllWrites(); CompleteAllWrites();
_log.ConnectionError(_connectionId, new TaskCanceledException("Write operation canceled. Aborting connection."));
}
} }
} }
@ -434,17 +439,11 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Http
private void CompleteAllWrites() private void CompleteAllWrites()
{ {
// Called inside _contextLock // Called inside _contextLock
var writesToComplete = _tasksPending.Count > 0;
var bytesLeftToBuffer = _maxBytesPreCompleted - _numBytesPreCompleted; var bytesLeftToBuffer = _maxBytesPreCompleted - _numBytesPreCompleted;
while (_tasksPending.Count > 0) while (_tasksPending.Count > 0)
{ {
CompleteNextWrite(ref bytesLeftToBuffer); CompleteNextWrite(ref bytesLeftToBuffer);
} }
if (writesToComplete)
{
_log.ConnectionError(_connectionId, new TaskCanceledException("Connetcion"));
}
} }
// This is called on the libuv event loop // This is called on the libuv event loop