From b7a9e6ccfacf2dd97f2ec31202c5191cb875b917 Mon Sep 17 00:00:00 2001 From: cliu31 Date: Mon, 13 Jul 2026 08:32:57 +0800 Subject: [PATCH] fix(#436): resolve race condition in EmitAsync --- src/SocketIOClient/SocketIO.cs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/SocketIOClient/SocketIO.cs b/src/SocketIOClient/SocketIO.cs index e7182886..d8cb82ff 100644 --- a/src/SocketIOClient/SocketIO.cs +++ b/src/SocketIOClient/SocketIO.cs @@ -283,13 +283,15 @@ public async Task EmitAsync( CancellationToken cancellationToken) { CheckStatusAndData(data); + int packetId; lock (_ackHandlerLock) { _packetId++; - _ackHandlers.Add(_packetId, ack); + packetId = _packetId; + _ackHandlers.Add(packetId, ack); } var sessionData = MergeEventData(eventName, data); - await _session!.SendAsync(sessionData, _packetId, cancellationToken).ConfigureAwait(false); + await _session!.SendAsync(sessionData, packetId, cancellationToken).ConfigureAwait(false); } public async Task EmitAsync(string eventName, IEnumerable data, Func ack)