aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Common.Implementations/Networking/BaseNetworkManager.cs
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2014-09-16 23:04:10 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2014-09-16 23:04:10 -0400
commit6130cb2403662596bba0474494372446d9caa3c3 (patch)
tree8068a437340aa7e904965caf7e50053c433623d0 /MediaBrowser.Common.Implementations/Networking/BaseNetworkManager.cs
parent5363cb2719752732db17199ce9ed27743f0a80a1 (diff)
adjust discovery of local ip addresses
Diffstat (limited to 'MediaBrowser.Common.Implementations/Networking/BaseNetworkManager.cs')
-rw-r--r--MediaBrowser.Common.Implementations/Networking/BaseNetworkManager.cs26
1 files changed, 22 insertions, 4 deletions
diff --git a/MediaBrowser.Common.Implementations/Networking/BaseNetworkManager.cs b/MediaBrowser.Common.Implementations/Networking/BaseNetworkManager.cs
index 8159be634..46f880657 100644
--- a/MediaBrowser.Common.Implementations/Networking/BaseNetworkManager.cs
+++ b/MediaBrowser.Common.Implementations/Networking/BaseNetworkManager.cs
@@ -24,14 +24,32 @@ namespace MediaBrowser.Common.Implementations.Networking
/// <returns>IPAddress.</returns>
public IEnumerable<string> GetLocalIpAddresses()
{
- var list = GetIPsDefault().Where(i => !IPAddress.IsLoopback(i)).Select(i => i.ToString()).ToList();
+ var list = GetIPsDefault()
+ .Where(i => !IPAddress.IsLoopback(i))
+ .Select(i => i.ToString())
+ .ToList();
- if (list.Count > 0)
+ try
{
- return list;
+ var listFromDns = Dns.GetHostAddresses(Dns.GetHostName())
+ .Where(i => i.AddressFamily == AddressFamily.InterNetwork)
+ .Where(i => !IPAddress.IsLoopback(i))
+ .Select(i => i.ToString())
+ .ToList();
+
+ if (listFromDns.Count > 0)
+ {
+ return listFromDns
+ .OrderBy(i => (list.Contains(i, StringComparer.OrdinalIgnoreCase) ? 0 : 1))
+ .ToList();
+ }
}
+ catch
+ {
- return GetLocalIpAddressesFallback();
+ }
+
+ return list;
}
public bool IsInLocalNetwork(string endpoint)