From 6dcfeb0b74bdd77546150baa5930d24348039fbc Mon Sep 17 00:00:00 2001 From: Dan Moseley Date: Sat, 1 Jan 2022 15:45:24 -0700 Subject: [PATCH 1/2] fix TryGetAddrInfo_HostName_TryGetNameInfo() --- .../tests/PalTests/NameResolutionPalTests.cs | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/libraries/System.Net.NameResolution/tests/PalTests/NameResolutionPalTests.cs b/src/libraries/System.Net.NameResolution/tests/PalTests/NameResolutionPalTests.cs index b753063dfb416..ad6ad8f7a24f0 100644 --- a/src/libraries/System.Net.NameResolution/tests/PalTests/NameResolutionPalTests.cs +++ b/src/libraries/System.Net.NameResolution/tests/PalTests/NameResolutionPalTests.cs @@ -181,12 +181,22 @@ public void TryGetAddrInfo_HostName_TryGetNameInfo() Assert.NotNull(aliases); Assert.NotNull(addresses); - string name = NameResolutionPal.TryGetNameInfo(addresses[0], out error, out nativeErrorCode); - if (error == SocketError.HostNotFound) + // Not all addresses returned by TryGetAddInfo can be resolved to host names, depending on network configuration. + // However at least one should be. + string name = null; + foreach(IPAddress address in addresses) + { + name = NameResolutionPal.TryGetNameInfo(address, out error, out nativeErrorCode); + if (error != SocketError.HostNotFound) + { + break; + } + } + + if (error == SocketError.HostNotFound && Environment.OSVersion.Platform == PlatformID.Unix) { // On Unix, getaddrinfo returns private ipv4 address for hostname. If the OS doesn't have the // reverse dns lookup entry for this address, getnameinfo returns host not found. - Assert.Equal(PlatformID.Unix, Environment.OSVersion.Platform); return; } From bd3c9aa442b2ebda6dad164be0be9157c62121ba Mon Sep 17 00:00:00 2001 From: Dan Moseley Date: Sat, 1 Jan 2022 16:27:15 -0700 Subject: [PATCH 2/2] Fix network test --- .../tests/PalTests/NameResolutionPalTests.cs | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/libraries/System.Net.NameResolution/tests/PalTests/NameResolutionPalTests.cs b/src/libraries/System.Net.NameResolution/tests/PalTests/NameResolutionPalTests.cs index ad6ad8f7a24f0..5ae74af0bd538 100644 --- a/src/libraries/System.Net.NameResolution/tests/PalTests/NameResolutionPalTests.cs +++ b/src/libraries/System.Net.NameResolution/tests/PalTests/NameResolutionPalTests.cs @@ -155,7 +155,18 @@ public void TryGetAddrInfo_LocalHost_TryGetNameInfo() Assert.NotNull(aliases); Assert.NotNull(addresses); - string name = NameResolutionPal.TryGetNameInfo(addresses[0], out error, out nativeErrorCode); + // Not all addresses returned by TryGetAddInfo can be resolved to host names, depending on network configuration. + // However at least one should be. + string name = null; + foreach(IPAddress address in addresses) + { + name = NameResolutionPal.TryGetNameInfo(address, out error, out nativeErrorCode); + if (error != SocketError.HostNotFound) + { + break; + } + } + Assert.Equal(SocketError.Success, error); Assert.NotNull(name); }