1
0
mirror of https://github.com/JKorf/CryptoExchange.Net.git synced 2026-08-19 12:22:56 +00:00

Fix for concurrent sent issue

This commit is contained in:
Jkorf
2021-08-20 16:27:23 +02:00
parent e142386bef
commit 474bb13204
3 changed files with 28 additions and 19 deletions
@@ -336,29 +336,33 @@ namespace CryptoExchange.Net.Sockets
_startedSent = true;
while (true)
{
if (_closing)
break;
_sendEvent.WaitOne();
if (_closing)
break;
if (!_sendBuffer.TryDequeue(out var data))
continue;
try
{
await _socket.SendAsync(new ArraySegment<byte>(data, 0, data.Length), WebSocketMessageType.Text, true, _ctsSource.Token).ConfigureAwait(false);
}
catch (OperationCanceledException)
{
// cancelled
break;
}
catch (WebSocketException wse)
while (_sendBuffer.TryDequeue(out var data))
{
// Connection closed unexpectedly
Handle(errorHandlers, wse);
await CloseInternalAsync(false, true).ConfigureAwait(false);
break;
try
{
log.Write(LogLevel.Debug, "Sending " + Encoding.UTF8.GetString(data));
await _socket.SendAsync(new ArraySegment<byte>(data, 0, data.Length), WebSocketMessageType.Text, true, _ctsSource.Token).ConfigureAwait(false);
}
catch (OperationCanceledException)
{
// cancelled
break;
}
catch (WebSocketException wse)
{
// Connection closed unexpectedly
Handle(errorHandlers, wse);
await CloseInternalAsync(false, true).ConfigureAwait(false);
break;
}
}
}
}