Fix SocketAsyncEventArgsAwaitable calling continuation multiple times (#918)

* Fix SocketAsyncEventArgsAwaitable calling continuation multiple times

* Use Interlocked.Exchange

---------

Co-authored-by: Rob Hague <rob.hague00@gmail.com>
This commit is contained in:
Igor Milavec
2024-04-27 22:43:42 +02:00
committed by GitHub
parent 4e1e2436af
commit 59840ecdba
@@ -33,11 +33,10 @@ namespace Renci.SshNet.Abstractions
return this;
}
public void SetCompleted()
private void SetCompleted()
{
IsCompleted = true;
var continuation = _continuationAction ?? Interlocked.CompareExchange(ref _continuationAction, SENTINEL, comparand: null);
var continuation = Interlocked.Exchange(ref _continuationAction, SENTINEL);
if (continuation is not null)
{
continuation();