dotnet / dotnet/aspnetcore

connection Abort + Dispose crashes process

Open
#57,098 2 comments 1 reaction 0 assignees View on GitHub
area-networking help wanted
Dominant language
C#
Stars
38.4k
Forks
10.9k
Avg merge
2d 10h
Merged PRs (30d)
281

Description

### Is there an existing issue for this?

- [X] I have searched the existing issues

### Describe the bug

I implemented A custom protocol and when I try to close an incoming connection my process crashes

### Expected Behavior

Im able to close a connection.

### Steps To Reproduce

```csharp
[TestMethod]
public async Task TestCancelConnection()
{
var connection = new DefaultConnectionContext();
connection.Abort();
await connection.DisposeAsync();

await Task.Delay(TimeSpan.FromSeconds(1));
}
```

https://github.com/dotnet/aspnetcore/blob/6dc454f9079ff8d4b268b7e307dd14a05917e903/src/Servers/Connections.Abstractions/src/DefaultConnectionContext.cs#L101

looks like this should have a catch or something that does not blow up if the connection is disposed

### Exceptions (if any)

The active test run was aborted. Reason: Test host process crashed : Unhandled exception. System.ObjectDisposedException: The CancellationTokenSource has been disposed.
at System.Threading.CancellationTokenSource.Cancel()
at System.Threading.ThreadPoolWorkQueue.Dispatch()
at System.Threading.PortableThreadPool.WorkerThread.WorkerThreadStart()

### .NET Version

8.0.6

### Anything else?

_No response_

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.