adjust discovery of local ip addresses

This commit is contained in:
Luke Pulverenti
2014-09-16 23:04:10 -04:00
parent 5363cb2719
commit 6130cb2403
6 changed files with 107 additions and 42 deletions

View File

@@ -950,17 +950,8 @@ namespace MediaBrowser.ServerApplication
/// <returns>System.String.</returns>
private string GetLocalIpAddress()
{
var localAddresses = NetworkManager.GetLocalIpAddresses().ToList();
// Cross-check the local ip addresses with addresses that have been received on with the http server
var matchedAddress = HttpServer.LocalEndPoints
.ToList()
.Select(i => i.Split(':').FirstOrDefault())
.Where(i => !string.IsNullOrEmpty(i))
.FirstOrDefault(i => localAddresses.Contains(i, StringComparer.OrdinalIgnoreCase));
// Return the first matched address, if found, or the first known local address
var address = matchedAddress ?? localAddresses.FirstOrDefault();
var address = HttpServerIpAddresses.FirstOrDefault();
if (!string.IsNullOrWhiteSpace(address))
{
@@ -972,6 +963,37 @@ namespace MediaBrowser.ServerApplication
return address;
}
public IEnumerable<string> HttpServerIpAddresses
{
get
{
var localAddresses = NetworkManager.GetLocalIpAddresses()
.ToList();
if (localAddresses.Count < 2)
{
return localAddresses;
}
var httpServerAddresses = HttpServer.LocalEndPoints
.Select(i => i.Split(':').FirstOrDefault())
.Where(i => !string.IsNullOrEmpty(i))
.ToList();
// Cross-check the local ip addresses with addresses that have been received on with the http server
var matchedAddresses = httpServerAddresses
.Where(i => localAddresses.Contains(i, StringComparer.OrdinalIgnoreCase))
.ToList();
if (matchedAddresses.Count == 0)
{
return localAddresses.Take(1);
}
return matchedAddresses;
}
}
public string FriendlyName
{
get