Timeout corrections for Updatemanager & Report Uploader

This commit is contained in:
Marcelo Ceccon
2024-09-06 17:02:04 +02:00
parent c7c46aed7d
commit 331960a3c5
2 changed files with 19 additions and 4 deletions
@@ -107,6 +107,16 @@ namespace Duplicati.Library.AutoUpdater
/// </summary>
public static UpdateInfo LastUpdateCheckVersion { get; private set; }
/// <summary>
/// The default timeout in seconds for download operations
/// </summary>
private const int DOWNLOAD_OPERATION_TIMEOUT_SECONDS = 3600;
/// <summary>
/// The default timeout in seconds for fast get version metadata operations
/// </summary>
private const int SHORT_OPERATION_TIMEOUT_SECONDS = 30;
/// <summary>
/// Performs static initialization of the update manager, populating the readonly fields of the manager
/// </summary>
@@ -325,8 +335,7 @@ namespace Duplicati.Library.AutoUpdater
request.Headers.Add("X-Install-ID", InstallID);
using var timeoutToken = new CancellationTokenSource();
timeoutToken.CancelAfter(HttpContextSettings.ReadWriteTimeout);
timeoutToken.CancelAfter(TimeSpan.FromSeconds(SHORT_OPERATION_TIMEOUT_SECONDS));
HttpClientHelper.DefaultClient.DownloadFile(request, tmpfile, null, timeoutToken.Token).ConfigureAwait(false).GetAwaiter().GetResult();
using (var fs = System.IO.File.OpenRead(tmpfile))
@@ -453,7 +462,7 @@ namespace Duplicati.Library.AutoUpdater
request.Headers.Add("X-Install-ID", InstallID);
using var timeoutToken = new CancellationTokenSource();
timeoutToken.CancelAfter(HttpContextSettings.ReadWriteTimeout);
timeoutToken.CancelAfter(TimeSpan.FromSeconds(DOWNLOAD_OPERATION_TIMEOUT_SECONDS));
HttpClientHelper.DefaultClient.DownloadFile(request, tempfile, cb, timeoutToken.Token).ConfigureAwait(false).GetAwaiter().GetResult();
@@ -49,6 +49,12 @@ namespace Duplicati.Library.UsageReporter
/// </summary>
private const string UPLOAD_URL = "https://usage-reporter.duplicati.com/api/v1/report";
/// <summary>
/// The default timeout in seconds for report uploads
/// </summary>
private const int UPLOAD_OPERATION_TIMEOUT_SECONDS = 60;
/// <summary>
/// Runs the upload process
/// </summary>
@@ -83,7 +89,7 @@ namespace Duplicati.Library.UsageReporter
request.Content = new StreamContent(fs);
using var timeoutToken = new CancellationTokenSource();
timeoutToken.CancelAfter(HttpContextSettings.ReadWriteTimeout);
timeoutToken.CancelAfter(TimeSpan.FromSeconds(UPLOAD_OPERATION_TIMEOUT_SECONDS));
var response = await HttpClientHelper.DefaultClient.UploadStream(request, timeoutToken.Token);
rc = (int)response.StatusCode;