aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2016-03-25 01:39:49 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2016-03-25 01:39:49 -0400
commit22730746eb5242fa71de34f35898c031e7a565de (patch)
treed05bd797f478787bbe8eef5f5367d454883be6eb
parent1a72e3b596538457227054236982df9943e8e0e6 (diff)
ipv6 update
-rw-r--r--MediaBrowser.Common.Implementations/HttpClientManager/HttpClientManager.cs19
-rw-r--r--MediaBrowser.Common/Net/HttpRequestOptions.cs1
-rw-r--r--MediaBrowser.Server.Implementations/Connect/ConnectEntryPoint.cs4
3 files changed, 23 insertions, 1 deletions
diff --git a/MediaBrowser.Common.Implementations/HttpClientManager/HttpClientManager.cs b/MediaBrowser.Common.Implementations/HttpClientManager/HttpClientManager.cs
index c30cdf1a7..f9dbd766f 100644
--- a/MediaBrowser.Common.Implementations/HttpClientManager/HttpClientManager.cs
+++ b/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;
diff --git a/MediaBrowser.Common/Net/HttpRequestOptions.cs b/MediaBrowser.Common/Net/HttpRequestOptions.cs
index 8c1f63e53..75368a5fc 100644
--- a/MediaBrowser.Common/Net/HttpRequestOptions.cs
+++ b/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)
{
diff --git a/MediaBrowser.Server.Implementations/Connect/ConnectEntryPoint.cs b/MediaBrowser.Server.Implementations/Connect/ConnectEntryPoint.cs
index 12de5f6ef..9462674c3 100644
--- a/MediaBrowser.Server.Implementations/Connect/ConnectEntryPoint.cs
+++ b/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))
{