diff --git a/src/libraries/System.Net.Sockets/src/System/Net/Sockets/Socket.Tasks.cs b/src/libraries/System.Net.Sockets/src/System/Net/Sockets/Socket.Tasks.cs index ad35f7138117e3..cb04d92d744c23 100644 --- a/src/libraries/System.Net.Sockets/src/System/Net/Sockets/Socket.Tasks.cs +++ b/src/libraries/System.Net.Sockets/src/System/Net/Sockets/Socket.Tasks.cs @@ -62,7 +62,8 @@ public ValueTask AcceptAsync(Socket? acceptSocket, CancellationToken can Interlocked.Exchange(ref _singleBufferSendEventArgs, null) ?? new AwaitableSocketAsyncEventArgs(this, isReceiveForCaching: false); - Debug.Assert(saea.BufferList == null); + Debug.Assert(saea.BufferList is null); + Debug.Assert(saea.AcceptSocket is null); saea.SetBuffer(null, 0, 0); saea.AcceptSocket = acceptSocket; saea.WrapExceptionsForNetworkStream = false; @@ -1048,6 +1049,8 @@ public ValueTask AcceptAsync(Socket socket, CancellationToken cancellati Socket acceptSocket = AcceptSocket!; SocketError error = SocketError; + AcceptSocket = null; + Release(); return error == SocketError.Success ? @@ -1405,6 +1408,8 @@ Socket IValueTaskSource.GetResult(short token) Socket acceptSocket = AcceptSocket!; CancellationToken cancellationToken = _cancellationToken; + AcceptSocket = null; + Release(); if (error != SocketError.Success)