mirror of
https://github.com/JKorf/CryptoExchange.Net
synced 2025-06-07 16:06:15 +00:00
Test some changes for robustness
This commit is contained in:
parent
0005534a95
commit
1c33e297e7
@ -211,8 +211,16 @@ namespace CryptoExchange.Net.Sockets
|
||||
while (_closeTask == null)
|
||||
await Task.Delay(50).ConfigureAwait(false);
|
||||
|
||||
await _closeTask.ConfigureAwait(false);
|
||||
_closeTask = null;
|
||||
await _closeSem.WaitAsync().ConfigureAwait(false);
|
||||
try
|
||||
{
|
||||
await _closeTask.ConfigureAwait(false);
|
||||
_closeTask = null;
|
||||
}
|
||||
finally
|
||||
{
|
||||
_closeSem.Release();
|
||||
}
|
||||
|
||||
if (!Parameters.AutoReconnect)
|
||||
{
|
||||
@ -285,8 +293,19 @@ namespace CryptoExchange.Net.Sockets
|
||||
return;
|
||||
|
||||
_log.Write(LogLevel.Debug, $"Socket {Id} reconnect requested");
|
||||
_closeTask = CloseInternalAsync();
|
||||
await _closeTask.ConfigureAwait(false);
|
||||
await _closeSem.WaitAsync().ConfigureAwait(false);
|
||||
try
|
||||
{
|
||||
if (_processState != ProcessState.Processing)
|
||||
return;
|
||||
|
||||
_closeTask = CloseInternalAsync();
|
||||
await _closeTask.ConfigureAwait(false);
|
||||
}
|
||||
finally
|
||||
{
|
||||
_closeSem.Release();
|
||||
}
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
@ -430,8 +449,19 @@ namespace CryptoExchange.Net.Sockets
|
||||
{
|
||||
// Connection closed unexpectedly, .NET framework
|
||||
OnError?.Invoke(ioe);
|
||||
if (_closeTask?.IsCompleted != false)
|
||||
_closeTask = CloseInternalAsync();
|
||||
await _closeSem.WaitAsync().ConfigureAwait(false);
|
||||
try
|
||||
{
|
||||
if (_processState != ProcessState.Processing)
|
||||
return;
|
||||
|
||||
if (_closeTask?.IsCompleted != false)
|
||||
_closeTask = CloseInternalAsync();
|
||||
}
|
||||
catch
|
||||
{
|
||||
_closeSem.Release();
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -488,8 +518,17 @@ namespace CryptoExchange.Net.Sockets
|
||||
{
|
||||
// Connection closed unexpectedly
|
||||
OnError?.Invoke(wse);
|
||||
if (_closeTask?.IsCompleted != false)
|
||||
_closeTask = CloseInternalAsync();
|
||||
await _closeSem.WaitAsync().ConfigureAwait(false);
|
||||
try
|
||||
{
|
||||
if (_processState == ProcessState.Processing && _closeTask?.IsCompleted != false)
|
||||
_closeTask = CloseInternalAsync();
|
||||
}
|
||||
catch
|
||||
{
|
||||
_closeSem.Release();
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
@ -497,8 +536,17 @@ namespace CryptoExchange.Net.Sockets
|
||||
{
|
||||
// Connection closed unexpectedly
|
||||
_log.Write(LogLevel.Debug, $"Socket {Id} received `Close` message");
|
||||
if (_closeTask?.IsCompleted != false)
|
||||
_closeTask = CloseInternalAsync();
|
||||
await _closeSem.WaitAsync().ConfigureAwait(false);
|
||||
try
|
||||
{
|
||||
if (_processState == ProcessState.Processing && _closeTask?.IsCompleted != false)
|
||||
_closeTask = CloseInternalAsync();
|
||||
}
|
||||
catch
|
||||
{
|
||||
_closeSem.Release();
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -253,7 +253,7 @@ namespace CryptoExchange.Net.Sockets
|
||||
var reconnectSuccessful = await ProcessReconnectAsync().ConfigureAwait(false);
|
||||
if (!reconnectSuccessful)
|
||||
{
|
||||
_log.Write(LogLevel.Warning, "Failed reconnect processing, reconnecting again");
|
||||
_log.Write(LogLevel.Warning, $"Failed reconnect processing: {reconnectSuccessful.Error}, reconnecting again");
|
||||
await _socket.ReconnectAsync().ConfigureAwait(false);
|
||||
}
|
||||
else
|
||||
|
Loading…
x
Reference in New Issue
Block a user