From 9461b57daa9ae4d74702b38de15cf2ee8c461263 Mon Sep 17 00:00:00 2001 From: Jkorf Date: Wed, 9 Feb 2022 13:37:12 +0100 Subject: [PATCH] Fix for time offset calculation not updating when offset is < 500ms --- CryptoExchange.Net/Clients/BaseRestClient.cs | 3 +++ CryptoExchange.Net/Clients/RestApiClient.cs | 13 ++----------- CryptoExchange.Net/Objects/TimeSyncState.cs | 13 +++++++++---- 3 files changed, 14 insertions(+), 15 deletions(-) diff --git a/CryptoExchange.Net/Clients/BaseRestClient.cs b/CryptoExchange.Net/Clients/BaseRestClient.cs index 55da9ec..45b0077 100644 --- a/CryptoExchange.Net/Clients/BaseRestClient.cs +++ b/CryptoExchange.Net/Clients/BaseRestClient.cs @@ -129,7 +129,10 @@ namespace CryptoExchange.Net { var syncTimeResult = await apiClient.SyncTimeAsync().ConfigureAwait(false); if (!syncTimeResult) + { + log.Write(LogLevel.Debug, $"[{requestId}] Failed to sync time, aborting request: " + syncTimeResult.Error); return syncTimeResult.As(default); + } } log.Write(LogLevel.Debug, $"[{requestId}] Creating request for " + uri); diff --git a/CryptoExchange.Net/Clients/RestApiClient.cs b/CryptoExchange.Net/Clients/RestApiClient.cs index 1d661bf..7ccadc0 100644 --- a/CryptoExchange.Net/Clients/RestApiClient.cs +++ b/CryptoExchange.Net/Clients/RestApiClient.cs @@ -93,17 +93,8 @@ namespace CryptoExchange.Net // Calculate time offset between local and server var offset = result.Data - localTime; - if (offset.TotalMilliseconds >= 0 && offset.TotalMilliseconds < 500) - { - // Small offset, probably mainly due to ping. Don't adjust time - timeSyncParams.UpdateTimeOffset(offset); - timeSyncParams.TimeSyncState.Semaphore.Release(); - } - else - { - timeSyncParams.UpdateTimeOffset(offset); - timeSyncParams.TimeSyncState.Semaphore.Release(); - } + timeSyncParams.UpdateTimeOffset(offset); + timeSyncParams.TimeSyncState.Semaphore.Release(); } return new WebCallResult(null, null, null, null, null, null, null, null, true, null); diff --git a/CryptoExchange.Net/Objects/TimeSyncState.cs b/CryptoExchange.Net/Objects/TimeSyncState.cs index 81f453b..5ac63ac 100644 --- a/CryptoExchange.Net/Objects/TimeSyncState.cs +++ b/CryptoExchange.Net/Objects/TimeSyncState.cs @@ -71,10 +71,15 @@ namespace CryptoExchange.Net.Objects { TimeSyncState.LastSyncTime = DateTime.UtcNow; if (offset.TotalMilliseconds > 0 && offset.TotalMilliseconds < 500) - return; - - Log.Write(LogLevel.Information, $"Time offset set to {Math.Round(offset.TotalMilliseconds)}ms"); - TimeSyncState.TimeOffset = offset; + { + Log.Write(LogLevel.Information, $"Time offset within limits, set offset to 0ms"); + TimeSyncState.TimeOffset = TimeSpan.Zero; + } + else + { + Log.Write(LogLevel.Information, $"Time offset set to {Math.Round(offset.TotalMilliseconds)}ms"); + TimeSyncState.TimeOffset = offset; + } } } }