aboutsummaryrefslogtreecommitdiff
path: root/Emby.Server.Core/ApplicationHost.cs
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2016-12-07 15:02:34 -0500
committerLuke Pulverenti <luke.pulverenti@gmail.com>2016-12-07 15:02:34 -0500
commit0130209cdce07dc042b075c6cf972a7eb1339861 (patch)
treeaede8b599fe887f206fbe703e023ed3677ea5f4f /Emby.Server.Core/ApplicationHost.cs
parent20c249979759a836f63a886a871db69ceaeb757e (diff)
improve ipv6 error handling
Diffstat (limited to 'Emby.Server.Core/ApplicationHost.cs')
-rw-r--r--Emby.Server.Core/ApplicationHost.cs47
1 files changed, 39 insertions, 8 deletions
diff --git a/Emby.Server.Core/ApplicationHost.cs b/Emby.Server.Core/ApplicationHost.cs
index f7fe02fba..06c761f21 100644
--- a/Emby.Server.Core/ApplicationHost.cs
+++ b/Emby.Server.Core/ApplicationHost.cs
@@ -1305,19 +1305,49 @@ namespace Emby.Server.Core
public async Task<List<IpAddressInfo>> GetLocalIpAddresses()
{
- var addresses = NetworkManager.GetLocalIpAddresses().ToList();
- var list = new List<IpAddressInfo>();
+ var addresses = ServerConfigurationManager
+ .Configuration
+ .LocalNetworkAddresses
+ .Select(NormalizeConfiguredLocalAddress)
+ .Where(i => i != null)
+ .ToList();
- foreach (var address in addresses)
+ if (addresses.Count == 0)
{
- var valid = await IsIpAddressValidAsync(address).ConfigureAwait(false);
- if (valid)
+ addresses.AddRange(NetworkManager.GetLocalIpAddresses());
+
+ var list = new List<IpAddressInfo>();
+
+ foreach (var address in addresses)
{
- list.Add(address);
+ var valid = await IsIpAddressValidAsync(address).ConfigureAwait(false);
+ if (valid)
+ {
+ list.Add(address);
+ }
}
+
+ addresses = list;
}
- return list;
+ return addresses;
+ }
+
+ private IpAddressInfo NormalizeConfiguredLocalAddress(string address)
+ {
+ var index = address.Trim('/').IndexOf('/');
+
+ if (index != -1)
+ {
+ address = address.Substring(index + 1);
+ }
+
+ IpAddressInfo result;
+ if (NetworkManager.TryParseIpAddress(address.Trim('/'), out result))
+ {
+ return result;
+ }
+ return null;
}
private readonly ConcurrentDictionary<string, bool> _validAddressResults = new ConcurrentDictionary<string, bool>(StringComparer.OrdinalIgnoreCase);
@@ -1553,7 +1583,8 @@ namespace Emby.Server.Core
throw new NotImplementedException();
}
- var process = ProcessFactory.Create(new ProcessOptions {
+ var process = ProcessFactory.Create(new ProcessOptions
+ {
FileName = url,
EnableRaisingEvents = true,
UseShellExecute = true,