ConnectionLimitMiddleware doesn't call Dispose on SemaphoreSlim _limiter.
ConsumableArrayBufferWriter should be sealed or the Dispose should be virtual.
TimerAwaitable should be sealed or the Dispose should be virtual.
ConnectionContextWithDelegateis disposing the ConnectionContext connection, although it is injected.
SocketSender doesn't call Dispose on SocketAsyncEventArgs _eventArgs. Plus, the _eventArgs.Completed += (_, e) => ((SocketAwaitable)e.UserToken).Complete(e.BytesTransferred, e.SocketError); not a memory leak, as it never unsubscribed? This is the same with the SocketReceiver.
ServerConnection doesn't call Dispose on CancellationTokenSource _connectionClosingCts.
Server doesn't call Dispose on TimerAwaitable _timerAwaitable.
Noticed a few potential issues:
ConnectionLimitMiddleware
doesn't callDispose
onSemaphoreSlim _limiter
.ConsumableArrayBufferWriter
should be sealed or theDispose
should bevirtual
.TimerAwaitable
should be sealed or theDispose
should bevirtual
.ConnectionContextWithDelegate
is disposing theConnectionContext connection
, although it is injected.SocketSender
doesn't callDispose
onSocketAsyncEventArgs _eventArgs
. Plus, the_eventArgs.Completed += (_, e) => ((SocketAwaitable)e.UserToken).Complete(e.BytesTransferred, e.SocketError);
not a memory leak, as it never unsubscribed? This is the same with theSocketReceiver
.ServerConnection
doesn't callDispose
onCancellationTokenSource _connectionClosingCts
.Server
doesn't callDispose
onTimerAwaitable _timerAwaitable
.