1
0
mirror of https://github.com/JKorf/CryptoExchange.Net.git synced 2026-08-11 16:32:57 +00:00

Fixed timing issue causing websocket connection to possible loop in error state

This commit is contained in:
Jkorf
2026-06-08 11:22:53 +02:00
parent cc25a405c6
commit 89cbd85875
@@ -584,11 +584,12 @@ namespace CryptoExchange.Net.Sockets.Default
{ {
byte[] rentedBuffer = _receiveBufferPool.Rent(_receiveBufferSize); byte[] rentedBuffer = _receiveBufferPool.Rent(_receiveBufferSize);
var buffer = new ArraySegment<byte>(rentedBuffer); var buffer = new ArraySegment<byte>(rentedBuffer);
var broken = false;
try try
{ {
while (true) while (true)
{ {
if (_ctsSource.IsCancellationRequested) if (_ctsSource.IsCancellationRequested || broken)
break; break;
MemoryStream? multipartStream = null; MemoryStream? multipartStream = null;
@@ -622,6 +623,8 @@ namespace CryptoExchange.Net.Sockets.Default
if (_closeTask?.IsCompleted != false) if (_closeTask?.IsCompleted != false)
_closeTask = CloseInternalAsync(); _closeTask = CloseInternalAsync();
broken = true;
break; break;
} }
@@ -735,11 +738,12 @@ namespace CryptoExchange.Net.Sockets.Default
{ {
byte[] rentedBuffer = _receiveBufferPool.Rent(_receiveBufferSize); byte[] rentedBuffer = _receiveBufferPool.Rent(_receiveBufferSize);
var buffer = new Memory<byte>(rentedBuffer); var buffer = new Memory<byte>(rentedBuffer);
var broken = false;
try try
{ {
while (true) while (true)
{ {
if (_ctsSource.IsCancellationRequested) if (_ctsSource.IsCancellationRequested || broken)
break; break;
MemoryStream? multipartStream = null; MemoryStream? multipartStream = null;
@@ -773,6 +777,8 @@ namespace CryptoExchange.Net.Sockets.Default
if (_closeTask?.IsCompleted != false) if (_closeTask?.IsCompleted != false)
_closeTask = CloseInternalAsync(); _closeTask = CloseInternalAsync();
broken = true;
break; break;
} }