diff options
author | Jose <jose@zeroc.com> | 2018-02-08 17:23:26 +0100 |
---|---|---|
committer | Jose <jose@zeroc.com> | 2018-02-08 17:23:26 +0100 |
commit | 41a4ea50bba42cd4585244f5a8e3ccbc6c20da4c (patch) | |
tree | 92eda1d6156d91d4bfce18f8fc06820af1e401ff /csharp/src | |
parent | Remove old files (diff) | |
parent | Fixed matlab check for testing (diff) | |
download | ice-41a4ea50bba42cd4585244f5a8e3ccbc6c20da4c.tar.bz2 ice-41a4ea50bba42cd4585244f5a8e3ccbc6c20da4c.tar.xz ice-41a4ea50bba42cd4585244f5a8e3ccbc6c20da4c.zip |
Merge branch '3.7' of github.com:zeroc-ice/ice into 3.7
Diffstat (limited to 'csharp/src')
-rw-r--r-- | csharp/src/Ice/Network.cs | 44 |
1 files changed, 35 insertions, 9 deletions
diff --git a/csharp/src/Ice/Network.cs b/csharp/src/Ice/Network.cs index fa64b8d004d..465d0ba35f9 100644 --- a/csharp/src/Ice/Network.cs +++ b/csharp/src/Ice/Network.cs @@ -739,14 +739,20 @@ namespace IceInternal List<EndPoint> addresses = new List<EndPoint>(); if(host.Length == 0) { - if(protocol != EnableIPv4) + foreach(IPAddress a in getLoopbackAddresses(protocol)) { - addresses.Add(new IPEndPoint(IPAddress.IPv6Loopback, port)); + addresses.Add(new IPEndPoint(a, port)); } - - if(protocol != EnableIPv6) + if(protocol == EnableBoth) { - addresses.Add(new IPEndPoint(IPAddress.Loopback, port)); + if(preferIPv6) + { + IceUtilInternal.Collections.Sort(ref addresses, _preferIPv6Comparator); + } + else + { + IceUtilInternal.Collections.Sort(ref addresses, _preferIPv4Comparator); + } } return addresses; } @@ -973,14 +979,21 @@ namespace IceInternal bool ipv4Wildcard = false; if(isWildcard(host, out ipv4Wildcard)) { - IPAddress[] addrs = getLocalAddresses(ipv4Wildcard ? EnableIPv4 : protocol, includeLoopback); - foreach(IPAddress a in addrs) + foreach(IPAddress a in getLocalAddresses(ipv4Wildcard ? EnableIPv4 : protocol, includeLoopback)) { if(!isLinklocal(a)) { hosts.Add(a.ToString()); } } + if(hosts.Count == 0) + { + // Return loopback if only loopback is available no other local addresses are available. + foreach(IPAddress a in getLoopbackAddresses(protocol)) + { + hosts.Add(a.ToString()); + } + } } return hosts; } @@ -991,8 +1004,7 @@ namespace IceInternal bool ipv4Wildcard = false; if(isWildcard(intf, out ipv4Wildcard)) { - IPAddress[] addrs = getLocalAddresses(ipv4Wildcard ? EnableIPv4 : protocol, true); - foreach(IPAddress a in addrs) + foreach(IPAddress a in getLocalAddresses(ipv4Wildcard ? EnableIPv4 : protocol, true)) { interfaces.Add(a.ToString()); } @@ -1245,6 +1257,20 @@ namespace IceInternal return false; } + public static List<IPAddress> getLoopbackAddresses(int protocol) + { + List<IPAddress> addresses = new List<IPAddress>(); + if(protocol != EnableIPv4) + { + addresses.Add(IPAddress.IPv6Loopback); + } + if(protocol != EnableIPv6) + { + addresses.Add(IPAddress.Loopback); + } + return addresses; + } + public static bool addressEquals(EndPoint addr1, EndPoint addr2) { |