Merge pull request #2719 from dotnet-maestro-bot/merge/release/2.2-to-master
[automated] Merge branch 'release/2.2' => 'master'
This commit is contained in:
commit
d709fa62b9
|
|
@ -314,8 +314,7 @@ namespace Microsoft.AspNetCore.Http.Connections.Internal
|
||||||
|
|
||||||
connection.Status = HttpConnectionStatus.Inactive;
|
connection.Status = HttpConnectionStatus.Inactive;
|
||||||
|
|
||||||
// Dispose the cancellation token
|
connection.Cancellation?.Cancel();
|
||||||
connection.Cancellation?.Dispose();
|
|
||||||
|
|
||||||
connection.Cancellation = null;
|
connection.Cancellation = null;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -515,6 +515,7 @@ namespace Microsoft.AspNetCore.SignalR
|
||||||
{
|
{
|
||||||
if (!_receivedMessageThisInterval)
|
if (!_receivedMessageThisInterval)
|
||||||
{
|
{
|
||||||
|
Log.ClientTimeout(_logger, TimeSpan.FromTicks(_clientTimeoutInterval));
|
||||||
Abort();
|
Abort();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -573,6 +574,9 @@ namespace Microsoft.AspNetCore.SignalR
|
||||||
private static readonly Action<ILogger, Exception> _abortFailed =
|
private static readonly Action<ILogger, Exception> _abortFailed =
|
||||||
LoggerMessage.Define(LogLevel.Trace, new EventId(8, "AbortFailed"), "Abort callback failed.");
|
LoggerMessage.Define(LogLevel.Trace, new EventId(8, "AbortFailed"), "Abort callback failed.");
|
||||||
|
|
||||||
|
private static readonly Action<ILogger, int, Exception> _clientTimeout =
|
||||||
|
LoggerMessage.Define<int>(LogLevel.Debug, new EventId(9, "ClientTimeout"), "Client timeout ({ClientTimeout}ms) elapsed without receiving a message from the client. Closing connection.");
|
||||||
|
|
||||||
public static void HandshakeComplete(ILogger logger, string hubProtocol)
|
public static void HandshakeComplete(ILogger logger, string hubProtocol)
|
||||||
{
|
{
|
||||||
_handshakeComplete(logger, hubProtocol, null);
|
_handshakeComplete(logger, hubProtocol, null);
|
||||||
|
|
@ -612,6 +616,11 @@ namespace Microsoft.AspNetCore.SignalR
|
||||||
{
|
{
|
||||||
_abortFailed(logger, exception);
|
_abortFailed(logger, exception);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void ClientTimeout(ILogger logger, TimeSpan timeout)
|
||||||
|
{
|
||||||
|
_clientTimeout(logger, (int)timeout.TotalMilliseconds, null);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -118,10 +118,11 @@ namespace Microsoft.AspNetCore.SignalR.Tests
|
||||||
Assert.Equal(bytes, buffer.Array.AsSpan(0, result.Count).ToArray());
|
Assert.Equal(bytes, buffer.Array.AsSpan(0, result.Count).ToArray());
|
||||||
|
|
||||||
logger.LogInformation("Closing socket");
|
logger.LogInformation("Closing socket");
|
||||||
await ws.CloseOutputAsync(WebSocketCloseStatus.Empty, "", CancellationToken.None).OrTimeout();
|
await ws.CloseOutputAsync(WebSocketCloseStatus.NormalClosure, "", CancellationToken.None).OrTimeout();
|
||||||
logger.LogInformation("Waiting for close");
|
logger.LogInformation("Waiting for close");
|
||||||
result = await ws.ReceiveAsync(buffer, CancellationToken.None).OrTimeout();
|
result = await ws.ReceiveAsync(buffer, CancellationToken.None).OrTimeout();
|
||||||
Assert.Equal(WebSocketMessageType.Close, result.MessageType);
|
Assert.Equal(WebSocketMessageType.Close, result.MessageType);
|
||||||
|
Assert.Equal(WebSocketCloseStatus.NormalClosure, result.CloseStatus);
|
||||||
logger.LogInformation("Closed socket");
|
logger.LogInformation("Closed socket");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -156,10 +157,11 @@ namespace Microsoft.AspNetCore.SignalR.Tests
|
||||||
Assert.Equal(bytes, buffer.Array.AsSpan(0, result.Count).ToArray());
|
Assert.Equal(bytes, buffer.Array.AsSpan(0, result.Count).ToArray());
|
||||||
|
|
||||||
logger.LogInformation("Closing socket");
|
logger.LogInformation("Closing socket");
|
||||||
await ws.CloseOutputAsync(WebSocketCloseStatus.Empty, "", CancellationToken.None).OrTimeout();
|
await ws.CloseOutputAsync(WebSocketCloseStatus.NormalClosure, "", CancellationToken.None).OrTimeout();
|
||||||
logger.LogInformation("Waiting for close");
|
logger.LogInformation("Waiting for close");
|
||||||
result = await ws.ReceiveAsync(buffer, CancellationToken.None).OrTimeout();
|
result = await ws.ReceiveAsync(buffer, CancellationToken.None).OrTimeout();
|
||||||
Assert.Equal(WebSocketMessageType.Close, result.MessageType);
|
Assert.Equal(WebSocketMessageType.Close, result.MessageType);
|
||||||
|
Assert.Equal(WebSocketCloseStatus.NormalClosure, result.CloseStatus);
|
||||||
logger.LogInformation("Closed socket");
|
logger.LogInformation("Closed socket");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue