|
@@ -8,6 +8,7 @@ using System.Text;
|
|
using Jellyfin.Api.Middleware;
|
|
using Jellyfin.Api.Middleware;
|
|
using Jellyfin.MediaEncoding.Hls.Extensions;
|
|
using Jellyfin.MediaEncoding.Hls.Extensions;
|
|
using Jellyfin.Networking.Configuration;
|
|
using Jellyfin.Networking.Configuration;
|
|
|
|
+using Jellyfin.Networking.HappyEyeballs;
|
|
using Jellyfin.Server.Extensions;
|
|
using Jellyfin.Server.Extensions;
|
|
using Jellyfin.Server.HealthChecks;
|
|
using Jellyfin.Server.HealthChecks;
|
|
using Jellyfin.Server.Implementations;
|
|
using Jellyfin.Server.Implementations;
|
|
@@ -26,6 +27,7 @@ using Microsoft.Extensions.Configuration;
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
using Microsoft.Extensions.FileProviders;
|
|
using Microsoft.Extensions.FileProviders;
|
|
using Microsoft.Extensions.Hosting;
|
|
using Microsoft.Extensions.Hosting;
|
|
|
|
+using Microsoft.VisualBasic;
|
|
using Prometheus;
|
|
using Prometheus;
|
|
|
|
|
|
namespace Jellyfin.Server
|
|
namespace Jellyfin.Server
|
|
@@ -78,6 +80,13 @@ namespace Jellyfin.Server
|
|
var acceptJsonHeader = new MediaTypeWithQualityHeaderValue(MediaTypeNames.Application.Json, 1.0);
|
|
var acceptJsonHeader = new MediaTypeWithQualityHeaderValue(MediaTypeNames.Application.Json, 1.0);
|
|
var acceptXmlHeader = new MediaTypeWithQualityHeaderValue(MediaTypeNames.Application.Xml, 0.9);
|
|
var acceptXmlHeader = new MediaTypeWithQualityHeaderValue(MediaTypeNames.Application.Xml, 0.9);
|
|
var acceptAnyHeader = new MediaTypeWithQualityHeaderValue("*/*", 0.8);
|
|
var acceptAnyHeader = new MediaTypeWithQualityHeaderValue("*/*", 0.8);
|
|
|
|
+ Func<IServiceProvider, HttpMessageHandler> eyeballsHttpClientHandlerDelegate = (_) => new SocketsHttpHandler()
|
|
|
|
+ {
|
|
|
|
+ AutomaticDecompression = DecompressionMethods.All,
|
|
|
|
+ RequestHeaderEncodingSelector = (_, _) => Encoding.UTF8,
|
|
|
|
+ ConnectCallback = HttpClientExtension.OnConnect
|
|
|
|
+ };
|
|
|
|
+
|
|
Func<IServiceProvider, HttpMessageHandler> defaultHttpClientHandlerDelegate = (_) => new SocketsHttpHandler()
|
|
Func<IServiceProvider, HttpMessageHandler> defaultHttpClientHandlerDelegate = (_) => new SocketsHttpHandler()
|
|
{
|
|
{
|
|
AutomaticDecompression = DecompressionMethods.All,
|
|
AutomaticDecompression = DecompressionMethods.All,
|
|
@@ -91,7 +100,7 @@ namespace Jellyfin.Server
|
|
c.DefaultRequestHeaders.Accept.Add(acceptXmlHeader);
|
|
c.DefaultRequestHeaders.Accept.Add(acceptXmlHeader);
|
|
c.DefaultRequestHeaders.Accept.Add(acceptAnyHeader);
|
|
c.DefaultRequestHeaders.Accept.Add(acceptAnyHeader);
|
|
})
|
|
})
|
|
- .ConfigurePrimaryHttpMessageHandler(defaultHttpClientHandlerDelegate);
|
|
|
|
|
|
+ .ConfigurePrimaryHttpMessageHandler(eyeballsHttpClientHandlerDelegate);
|
|
|
|
|
|
services.AddHttpClient(NamedClient.MusicBrainz, c =>
|
|
services.AddHttpClient(NamedClient.MusicBrainz, c =>
|
|
{
|
|
{
|
|
@@ -100,6 +109,15 @@ namespace Jellyfin.Server
|
|
c.DefaultRequestHeaders.Accept.Add(acceptXmlHeader);
|
|
c.DefaultRequestHeaders.Accept.Add(acceptXmlHeader);
|
|
c.DefaultRequestHeaders.Accept.Add(acceptAnyHeader);
|
|
c.DefaultRequestHeaders.Accept.Add(acceptAnyHeader);
|
|
})
|
|
})
|
|
|
|
+ .ConfigurePrimaryHttpMessageHandler(eyeballsHttpClientHandlerDelegate);
|
|
|
|
+
|
|
|
|
+ services.AddHttpClient(NamedClient.DirectIp, c =>
|
|
|
|
+ {
|
|
|
|
+ c.DefaultRequestHeaders.UserAgent.Add(productHeader);
|
|
|
|
+ c.DefaultRequestHeaders.Accept.Add(acceptJsonHeader);
|
|
|
|
+ c.DefaultRequestHeaders.Accept.Add(acceptXmlHeader);
|
|
|
|
+ c.DefaultRequestHeaders.Accept.Add(acceptAnyHeader);
|
|
|
|
+ })
|
|
.ConfigurePrimaryHttpMessageHandler(defaultHttpClientHandlerDelegate);
|
|
.ConfigurePrimaryHttpMessageHandler(defaultHttpClientHandlerDelegate);
|
|
|
|
|
|
services.AddHttpClient(NamedClient.Dlna, c =>
|
|
services.AddHttpClient(NamedClient.Dlna, c =>
|