- The connection state object is manipulated by multiple parties in a non thread safe way. This change introduces a semaphore that should be used by anyone updating or reading the connection state. - Handle cases where there's an active request for a connection id and another incoming request for the same connection id, sse and websockets 409 and long polling kicks out the previous connection (https://github.com/aspnet/SignalR/issues/27 and https://github.com/aspnet/SignalR/issues/4) - Handle requests being processed for disposed connections. There was a race where the background thread could remove and clean up the connection while it was about to be processed. - Synchronize between the background scanning thread and the request threads when updating the connection state. - Added `DisposeAndRemoveAsync` to the connection manager that handles`DisposeAsync` throwing and properly removes connections from connection tracking. - Added Start to ConnectionManager so that testing is easier (background timer doesn't kick in unless start is called). - Added RequestId to connection state for easier debugging and correlation (can easily see which request is currently processing the logical connection). - Added tests |
||
|---|---|---|
| .. | ||
| Microsoft.AspNetCore.Client.SignalR.TS.Tests | ||
| Microsoft.AspNetCore.SignalR.Client.FunctionalTests | ||
| Microsoft.AspNetCore.SignalR.Test.Server | ||
| Microsoft.AspNetCore.SignalR.Tests | ||
| Microsoft.AspNetCore.Sockets.Client.Tests | ||
| Microsoft.AspNetCore.Sockets.Tests | ||
| Microsoft.AspNetCore.WebSockets.Internal.ConformanceTest | ||
| Microsoft.Extensions.WebSockets.Internal.Tests | ||
| WebSocketsTestApp | ||