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