From 524e412c28bb42a79ab56bd9a72e150bbb86c648 Mon Sep 17 00:00:00 2001 From: Loporrit <141286461+loporrit@users.noreply.github.com> Date: Thu, 5 Sep 2024 06:13:42 +0000 Subject: [PATCH] Add DistributionFileServerForceHTTP2 --- .../Utils/StaticFilesServerConfiguration.cs | 3 +++ .../Services/CachedFileProvider.cs | 6 ++++++ 2 files changed, 9 insertions(+) diff --git a/MareSynchronosServer/MareSynchronosShared/Utils/StaticFilesServerConfiguration.cs b/MareSynchronosServer/MareSynchronosShared/Utils/StaticFilesServerConfiguration.cs index 8882b62..a2d1200 100644 --- a/MareSynchronosServer/MareSynchronosShared/Utils/StaticFilesServerConfiguration.cs +++ b/MareSynchronosServer/MareSynchronosShared/Utils/StaticFilesServerConfiguration.cs @@ -8,6 +8,7 @@ public class StaticFilesServerConfiguration : MareConfigurationBase public bool IsDistributionNode { get; set; } = false; public Uri? MainFileServerAddress { get; set; } = null; public Uri? DistributionFileServerAddress { get; set; } = null; + public bool DistributionFileServerForceHTTP2 { get; set; } = false; public int ForcedDeletionOfFilesAfterHours { get; set; } = -1; public double CacheSizeHardLimitInGiB { get; set; } = -1; public int UnusedFileRetentionPeriodInDays { get; set; } = 14; @@ -30,6 +31,8 @@ public class StaticFilesServerConfiguration : MareConfigurationBase StringBuilder sb = new(); sb.AppendLine(base.ToString()); sb.AppendLine($"{nameof(MainFileServerAddress)} => {MainFileServerAddress}"); + sb.AppendLine($"{nameof(DistributionFileServerAddress)} => {DistributionFileServerAddress}"); + sb.AppendLine($"{nameof(DistributionFileServerForceHTTP2)} => {DistributionFileServerForceHTTP2}"); sb.AppendLine($"{nameof(ForcedDeletionOfFilesAfterHours)} => {ForcedDeletionOfFilesAfterHours}"); sb.AppendLine($"{nameof(CacheSizeHardLimitInGiB)} => {CacheSizeHardLimitInGiB}"); sb.AppendLine($"{nameof(UseColdStorage)} => {UseColdStorage}"); diff --git a/MareSynchronosServer/MareSynchronosStaticFilesServer/Services/CachedFileProvider.cs b/MareSynchronosServer/MareSynchronosStaticFilesServer/Services/CachedFileProvider.cs index 020971f..b8cb985 100644 --- a/MareSynchronosServer/MareSynchronosStaticFilesServer/Services/CachedFileProvider.cs +++ b/MareSynchronosServer/MareSynchronosStaticFilesServer/Services/CachedFileProvider.cs @@ -30,6 +30,7 @@ public sealed class CachedFileProvider : IDisposable public CachedFileProvider(IConfigurationService configuration, ILogger logger, FileStatisticsService fileStatisticsService, MareMetrics metrics, ServerTokenGenerator generator) { + AppContext.SetSwitch("System.Net.Http.SocketsHttpHandler.Http2UnencryptedSupport", true); _configuration = configuration; _logger = logger; _fileStatisticsService = fileStatisticsService; @@ -65,6 +66,11 @@ public sealed class CachedFileProvider : IDisposable using var requestMessage = new HttpRequestMessage(HttpMethod.Get, downloadUrl); requestMessage.Headers.Authorization = new AuthenticationHeaderValue("Bearer", _generator.Token); + if (_configuration.GetValueOrDefault(nameof(StaticFilesServerConfiguration.DistributionFileServerForceHTTP2), false)) + { + requestMessage.Version = new Version(2, 0); + requestMessage.VersionPolicy = HttpVersionPolicy.RequestVersionExact; + } HttpResponseMessage? response = null; try