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:
@@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user