1
0
mirror of https://github.com/JKorf/CryptoExchange.Net synced 2025-07-09 07:28:48 +00:00

Compare commits

..

No commits in common. "892e8a4508bf1ad887ce1ec5c87ee7f99503bc20" and "5c41ef1ee40f56076d967a53911b175b1be56cdb" have entirely different histories.

5 changed files with 12 additions and 22 deletions

View File

@ -220,7 +220,7 @@ namespace CryptoExchange.Net
_log.Write(LogLevel.Information, $"[{requestId}] Creating request for " + uri);
var paramsPosition = parameterPosition ?? ParameterPositions[method];
var request = ConstructRequest(uri, method, parameters?.OrderBy(p => p.Key).ToDictionary(p => p.Key, p => p.Value), signed, paramsPosition, arraySerialization ?? this.arraySerialization, requestId, additionalHeaders);
var request = ConstructRequest(uri, method, parameters, signed, paramsPosition, arraySerialization ?? this.arraySerialization, requestId, additionalHeaders);
string? paramString = "";
if (paramsPosition == HttpMethodParameterPosition.InBody)

View File

@ -6,16 +6,16 @@
<PackageId>CryptoExchange.Net</PackageId>
<Authors>JKorf</Authors>
<Description>A base package for implementing cryptocurrency API's</Description>
<PackageVersion>5.3.1</PackageVersion>
<AssemblyVersion>5.3.1</AssemblyVersion>
<FileVersion>5.3.1</FileVersion>
<PackageVersion>5.3.0</PackageVersion>
<AssemblyVersion>5.3.0</AssemblyVersion>
<FileVersion>5.3.0</FileVersion>
<PackageRequireLicenseAcceptance>false</PackageRequireLicenseAcceptance>
<RepositoryType>git</RepositoryType>
<RepositoryUrl>https://github.com/JKorf/CryptoExchange.Net.git</RepositoryUrl>
<PackageProjectUrl>https://github.com/JKorf/CryptoExchange.Net</PackageProjectUrl>
<NeutralLanguage>en</NeutralLanguage>
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
<PackageReleaseNotes>5.3.1 - Added default request parameter ordering before applying authentication, Fixed possible issue where a socket would reconnect when it should close if it was already in reconnecting</PackageReleaseNotes>
<PackageReleaseNotes>5.3.0 - Reworked client architecture, shifting funcationality to the ApiClient, Fixed ArrayConverter exponent parsing, Fixed ArrayConverter not checking null, Added optional delay setting after establishing socket connection, Added callback for revitalizing a socket request when reconnecting, Fixed proxy setting websocket</PackageReleaseNotes>
<Nullable>enable</Nullable>
<LangVersion>9.0</LangVersion>
<PackageLicenseExpression>MIT</PackageLicenseExpression>

View File

@ -271,7 +271,7 @@ namespace CryptoExchange.Net.Objects
/// <summary>
/// The time to wait after connecting a socket before sending messages. Can be used for API's which will rate limit if you subscribe directly after connecting.
/// </summary>
public TimeSpan DelayAfterConnect { get; set; } = TimeSpan.Zero;
public TimeSpan DelayAfterConnect = TimeSpan.Zero;
/// <summary>
/// ctor
@ -305,7 +305,6 @@ namespace CryptoExchange.Net.Objects
SocketNoDataTimeout = baseOptions.SocketNoDataTimeout;
SocketSubscriptionsCombineTarget = baseOptions.SocketSubscriptionsCombineTarget;
MaxSocketConnections = baseOptions.MaxSocketConnections;
DelayAfterConnect = baseOptions.DelayAfterConnect;
}
/// <inheritdoc />

View File

@ -293,17 +293,17 @@ namespace CryptoExchange.Net.Sockets
public virtual async Task CloseAsync()
{
await _closeSem.WaitAsync().ConfigureAwait(false);
_stopRequested = true;
try
{
if (_closeTask?.IsCompleted == false)
if (_closeTask != null && !_closeTask.IsCompleted)
{
_log.Write(LogLevel.Debug, $"Socket {Id} CloseAsync() waiting for existing close task");
await _closeTask.ConfigureAwait(false);
return;
}
_stopRequested = true;
if (!IsOpen)
{
_log.Write(LogLevel.Debug, $"Socket {Id} CloseAsync() socket not open");
@ -430,8 +430,7 @@ namespace CryptoExchange.Net.Sockets
{
// Connection closed unexpectedly, .NET framework
OnError?.Invoke(ioe);
if (_closeTask?.IsCompleted != false)
_closeTask = CloseInternalAsync();
_closeTask = CloseInternalAsync();
break;
}
}
@ -442,7 +441,6 @@ namespace CryptoExchange.Net.Sockets
// Because this is running in a separate task and not awaited until the socket gets closed
// any exception here will crash the send processing, but do so silently unless the socket get's stopped.
// Make sure we at least let the owner know there was an error
_log.Write(LogLevel.Warning, $"Socket {Id} Send loop stopped with exception");
OnError?.Invoke(e);
throw;
}
@ -488,8 +486,7 @@ namespace CryptoExchange.Net.Sockets
{
// Connection closed unexpectedly
OnError?.Invoke(wse);
if (_closeTask?.IsCompleted != false)
_closeTask = CloseInternalAsync();
_closeTask = CloseInternalAsync();
break;
}
@ -497,8 +494,7 @@ namespace CryptoExchange.Net.Sockets
{
// Connection closed unexpectedly
_log.Write(LogLevel.Debug, $"Socket {Id} received `Close` message");
if (_closeTask?.IsCompleted != false)
_closeTask = CloseInternalAsync();
_closeTask = CloseInternalAsync();
break;
}
@ -563,7 +559,6 @@ namespace CryptoExchange.Net.Sockets
// Because this is running in a separate task and not awaited until the socket gets closed
// any exception here will crash the receive processing, but do so silently unless the socket gets stopped.
// Make sure we at least let the owner know there was an error
_log.Write(LogLevel.Warning, $"Socket {Id} Receive loop stopped with exception");
OnError?.Invoke(e);
throw;
}

View File

@ -33,10 +33,6 @@ Make a one time donation in a crypto currency of your choice. If you prefer to d
Alternatively, sponsor me on Github using [Github Sponsors](https://github.com/sponsors/JKorf).
## Release notes
* Version 5.3.1 - 08 Dec 2022
* Added default request parameter ordering before applying authentication
* Fixed possible issue where a socket would reconnect when it should close if it was already in reconnecting
* Version 5.3.0 - 14 Nov 2022
* Reworked client architecture, shifting funcationality to the ApiClient
* Fixed ArrayConverter exponent parsing