From a8321e083e9a51064e727f564ca962bd0319576d Mon Sep 17 00:00:00 2001 From: Jkorf Date: Thu, 22 Jan 2026 09:57:02 +0100 Subject: [PATCH] Fixed potential collection modified exception upon logging message not handled in websocket message handling --- .../Sockets/Default/SocketConnection.cs | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/CryptoExchange.Net/Sockets/Default/SocketConnection.cs b/CryptoExchange.Net/Sockets/Default/SocketConnection.cs index 89bfa7a..3023b37 100644 --- a/CryptoExchange.Net/Sockets/Default/SocketConnection.cs +++ b/CryptoExchange.Net/Sockets/Default/SocketConnection.cs @@ -632,12 +632,12 @@ namespace CryptoExchange.Net.Sockets.Default || route.TopicFilter == null || route.TopicFilter.Equals(topicFilter, StringComparison.Ordinal)) { + processed = true; + if (isQuery && query!.Completed) continue; - processed = true; processor.Handle(this, receiveTime, originalData, result, route); - if (isQuery && !route.MultipleReaders) { complete = true; @@ -653,8 +653,11 @@ namespace CryptoExchange.Net.Sockets.Default if (!processed) { - _logger.ReceivedMessageNotMatchedToAnyListener(SocketId, topicFilter!, - string.Join(",", _listeners.Select(x => string.Join(",", x.MessageRouter.Routes.Select(x => x.TopicFilter != null ? string.Join(",", x.TopicFilter) : "[null]"))))); + lock (_listenersLock) + { + _logger.ReceivedMessageNotMatchedToAnyListener(SocketId, topicFilter!, + string.Join(",", _listeners.Select(x => string.Join(",", x.MessageRouter.Routes.Select(x => x.TopicFilter != null ? string.Join(",", x.TopicFilter) : "[null]"))))); + } } }