Skip to content

Commit 0347724

Browse files
authored
Merge pull request #984 from Unity-Technologies/unity-master-fix-socket-getcheckedips
Fix issue where no addresses will be returned for an address family of unspecified FB1045497
2 parents 268fd52 + 1385860 commit 0347724

File tree

1 file changed

+16
-11
lines changed

1 file changed

+16
-11
lines changed

mcs/class/System/System.Net.Sockets/Socket.cs

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1160,19 +1160,24 @@ bool GetCheckedIPs (SocketAsyncEventArgs e, out IPAddress [] addresses)
11601160
// while skipping entries that do not match the address family
11611161
DnsEndPoint dep = e.RemoteEndPoint as DnsEndPoint;
11621162
if (dep != null) {
1163-
var possibleAddresses = Dns.GetHostAddresses (dep.Host);
1164-
var numberOfAddresses = 0;
1165-
int[] addressIndices = new int[possibleAddresses.Length];
1166-
for (var i = 0; i < possibleAddresses.Length; i++) {
1167-
if (possibleAddresses[i].AddressFamily == dep.AddressFamily) {
1168-
addressIndices[numberOfAddresses] = i;
1169-
numberOfAddresses++;
1163+
if (dep.AddressFamily == AddressFamily.Unspecified)
1164+
{
1165+
addresses = Dns.GetHostAddresses(dep.Host);
1166+
} else {
1167+
var possibleAddresses = Dns.GetHostAddresses (dep.Host);
1168+
var numberOfAddresses = 0;
1169+
int[] addressIndices = new int[possibleAddresses.Length];
1170+
for (var i = 0; i < possibleAddresses.Length; i++) {
1171+
if (possibleAddresses[i].AddressFamily == dep.AddressFamily) {
1172+
addressIndices[numberOfAddresses] = i;
1173+
numberOfAddresses++;
1174+
}
11701175
}
1171-
}
1172-
addresses = new IPAddress[numberOfAddresses];
1173-
for (var i = 0; i < numberOfAddresses; i++)
1174-
addresses[i] = possibleAddresses[addressIndices[i]];
11751176

1177+
addresses = new IPAddress[numberOfAddresses];
1178+
for (var i = 0; i < numberOfAddresses; i++)
1179+
addresses[i] = possibleAddresses[addressIndices[i]];
1180+
}
11761181
return true;
11771182
} else {
11781183
e.ConnectByNameError = null;

0 commit comments

Comments
 (0)