aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Framework/Util.cs
diff options
context:
space:
mode:
authorMelanie2010-02-18 04:19:33 +0000
committerMelanie2010-02-18 04:19:33 +0000
commit842b68eeff7571d3c82415c65065bec3c95f34ea (patch)
tree5980e497c3f3fc5acb9bd549e4b050268a92f2b4 /OpenSim/Framework/Util.cs
parentRevert "change "SYSTEMIP" to "localhost" in the create region console command... (diff)
downloadopensim-SC_OLD-842b68eeff7571d3c82415c65065bec3c95f34ea.zip
opensim-SC_OLD-842b68eeff7571d3c82415c65065bec3c95f34ea.tar.gz
opensim-SC_OLD-842b68eeff7571d3c82415c65065bec3c95f34ea.tar.bz2
opensim-SC_OLD-842b68eeff7571d3c82415c65065bec3c95f34ea.tar.xz
Change handling of the SYSTEMIP constant to be more sane.
This will now choose the first network interface IP address, or the loopback interface if no external interfaces are found. It will log the IP address used as [NETWORK]: Using x.x.x.x for SYSTEMIP.
Diffstat (limited to '')
-rw-r--r--OpenSim/Framework/Util.cs18
1 files changed, 12 insertions, 6 deletions
diff --git a/OpenSim/Framework/Util.cs b/OpenSim/Framework/Util.cs
index 7215086..48435cb 100644
--- a/OpenSim/Framework/Util.cs
+++ b/OpenSim/Framework/Util.cs
@@ -589,11 +589,17 @@ namespace OpenSim.Framework
589 589
590 public static IPAddress GetLocalHost() 590 public static IPAddress GetLocalHost()
591 { 591 {
592 string dnsAddress = "localhost"; 592 IPAddress[] iplist = GetLocalHosts();
593 593
594 IPAddress[] hosts = Dns.GetHostEntry(dnsAddress).AddressList; 594 if (iplist.Length == 0) // No accessible external interfaces
595 {
596 IPAddress[] loopback = Dns.GetHostAddresses("localhost");
597 IPAddress localhost = loopback[0];
595 598
596 foreach (IPAddress host in hosts) 599 return localhost;
600 }
601
602 foreach (IPAddress host in iplist)
597 { 603 {
598 if (!IPAddress.IsLoopback(host) && host.AddressFamily == AddressFamily.InterNetwork) 604 if (!IPAddress.IsLoopback(host) && host.AddressFamily == AddressFamily.InterNetwork)
599 { 605 {
@@ -601,15 +607,15 @@ namespace OpenSim.Framework
601 } 607 }
602 } 608 }
603 609
604 if (hosts.Length > 0) 610 if (iplist.Length > 0)
605 { 611 {
606 foreach (IPAddress host in hosts) 612 foreach (IPAddress host in iplist)
607 { 613 {
608 if (host.AddressFamily == AddressFamily.InterNetwork) 614 if (host.AddressFamily == AddressFamily.InterNetwork)
609 return host; 615 return host;
610 } 616 }
611 // Well all else failed... 617 // Well all else failed...
612 return hosts[0]; 618 return iplist[0];
613 } 619 }
614 620
615 return null; 621 return null;