Luke Pulverenti 9 سال پیش
والد
کامیت
22730746eb

+ 19 - 0
MediaBrowser.Common.Implementations/HttpClientManager/HttpClientManager.cs

@@ -126,6 +126,23 @@ namespace MediaBrowser.Common.Implementations.HttpClientManager
             }
         }
 
+        private void AddIpv4Option(HttpWebRequest request, HttpRequestOptions options)
+        {
+            if (!options.PreferIpv4)
+            {
+                return;
+            }
+
+            request.ServicePoint.BindIPEndPointDelegate = (servicePount, remoteEndPoint, retryCount) =>
+            {
+                if (remoteEndPoint.AddressFamily == AddressFamily.InterNetwork)
+                {
+                    return new IPEndPoint(IPAddress.Any, 0);
+                }
+                throw new InvalidOperationException("no IPv4 address");
+            };
+        }
+
         private WebRequest GetRequest(HttpRequestOptions options, string method, bool enableHttpCompression)
         {
             var request = CreateWebRequest(options.Url);
@@ -133,6 +150,8 @@ namespace MediaBrowser.Common.Implementations.HttpClientManager
 
             if (httpWebRequest != null)
             {
+                AddIpv4Option(httpWebRequest, options);
+
                 AddRequestHeaders(httpWebRequest, options);
 
                 httpWebRequest.AutomaticDecompression = enableHttpCompression ? DecompressionMethods.Deflate : DecompressionMethods.None;

+ 1 - 0
MediaBrowser.Common/Net/HttpRequestOptions.cs

@@ -96,6 +96,7 @@ namespace MediaBrowser.Common.Net
         public TimeSpan CacheLength { get; set; }
 
         public int TimeoutMs { get; set; }
+        public bool PreferIpv4 { get; set; }
 
         private string GetHeaderValue(string name)
         {

+ 3 - 1
MediaBrowser.Server.Implementations/Connect/ConnectEntryPoint.cs

@@ -70,7 +70,9 @@ namespace MediaBrowser.Server.Implementations.Connect
                         LogErrors = logErrors,
 
                         // Seeing block length errors with our server
-                        EnableHttpCompression = false
+                        EnableHttpCompression = false,
+
+                        PreferIpv4 = true
 
                     }).ConfigureAwait(false))
                     {