From 9ff673d8be2b84a8b2fcc620780069755fb26b6b Mon Sep 17 00:00:00 2001 From: JKorf Date: Mon, 17 Jun 2024 10:53:22 +0200 Subject: [PATCH] Fixed unhandled exception when websocket connection is interupted while waiting for ratelimit --- .../Sockets/CryptoExchangeWebSocketClient.cs | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/CryptoExchange.Net/Sockets/CryptoExchangeWebSocketClient.cs b/CryptoExchange.Net/Sockets/CryptoExchangeWebSocketClient.cs index 60302f2..5c73381 100644 --- a/CryptoExchange.Net/Sockets/CryptoExchangeWebSocketClient.cs +++ b/CryptoExchange.Net/Sockets/CryptoExchangeWebSocketClient.cs @@ -462,11 +462,19 @@ namespace CryptoExchange.Net.Sockets { if (Parameters.RateLimiter != null) { - var limitResult = await Parameters.RateLimiter.ProcessAsync(_logger, data.Id, RateLimitItemType.Request, requestDefinition, _baseAddress, null, data.Weight, Parameters.RateLimitingBehaviour, _ctsSource.Token).ConfigureAwait(false); - if (!limitResult) + try { - await (OnRequestRateLimited?.Invoke(data.Id) ?? Task.CompletedTask).ConfigureAwait(false); - continue; + var limitResult = await Parameters.RateLimiter.ProcessAsync(_logger, data.Id, RateLimitItemType.Request, requestDefinition, _baseAddress, null, data.Weight, Parameters.RateLimitingBehaviour, _ctsSource.Token).ConfigureAwait(false); + if (!limitResult) + { + await (OnRequestRateLimited?.Invoke(data.Id) ?? Task.CompletedTask).ConfigureAwait(false); + continue; + } + } + catch (OperationCanceledException) + { + // canceled + break; } }