Merge in 'release/3.1' changes

This commit is contained in:
dotnet-bot 2020-07-16 23:51:09 +00:00
commit b110c810a4
2 changed files with 25 additions and 0 deletions

View File

@ -501,6 +501,11 @@ namespace Microsoft.AspNetCore.SignalR.Client
{
connectionState.Stopping = true;
}
else
{
// Reset StopCts if there isn't an active connection so that the next StartAsync wont immediately fail due to the token being canceled
_state.StopCts = new CancellationTokenSource();
}
if (disposing)
{

View File

@ -334,6 +334,26 @@ namespace Microsoft.AspNetCore.SignalR.Client.Tests
});
}
[Fact]
public async Task StopAsyncOnInactiveConnectionDoesNotAffectNextStartAsync()
{
// Regression test:
// If there wasn't an active underlying connection, StopAsync would leave a CTS canceled which would cause the next StartAsync to fail
var testConnection = new TestConnection();
await AsyncUsing(CreateHubConnection(testConnection), async connection =>
{
Assert.Equal(HubConnectionState.Disconnected, connection.State);
await connection.StopAsync().OrTimeout();
Assert.False(testConnection.Disposed.IsCompleted);
Assert.Equal(HubConnectionState.Disconnected, connection.State);
await connection.StartAsync().OrTimeout();
Assert.True(testConnection.Started.IsCompleted);
Assert.Equal(HubConnectionState.Connected, connection.State);
});
}
[Fact]
public async Task CompletingTheTransportSideMarksConnectionAsClosed()
{