From d8d4510d0f6273ee77c0a4f4189263d7f7eba3b6 Mon Sep 17 00:00:00 2001 From: Oliver Booth Date: Wed, 14 Feb 2024 15:24:01 +0000 Subject: [PATCH] fix: remove callback tcs on response --- TcpDotNet/ClientNode.cs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/TcpDotNet/ClientNode.cs b/TcpDotNet/ClientNode.cs index 46aea66..0f7f8c1 100644 --- a/TcpDotNet/ClientNode.cs +++ b/TcpDotNet/ClientNode.cs @@ -236,12 +236,16 @@ public abstract class ClientNode : Node { if (packet is null) throw new ArgumentNullException(nameof(packet)); + long callbackId = packet.CallbackId; var completionSource = new TaskCompletionSource(); - if (!_callbackCompletionSources.TryAdd(packet.CallbackId, completionSource)) + + if (!_callbackCompletionSources.TryAdd(callbackId, completionSource)) throw new InvalidOperationException("Duplicate packet sent"); await SendPacketAsync(packet, cancellationToken); - return (TReceive)await completionSource.Task; + var response = (TReceive)await completionSource.Task; + _callbackCompletionSources.TryRemove(callbackId, out _); + return response; } ///