@@ -1160,19 +1160,22 @@ sub get_free_port
1160
1160
# Check to see if anything else is listening on this TCP port.
1161
1161
# Seek a port available for all possible listen_addresses values,
1162
1162
# so callers can harness this port for the widest range of purposes.
1163
- # The 0.0.0.0 test achieves that for post-2006 Cygwin, which
1164
- # automatically sets SO_EXCLUSIVEADDRUSE. The same holds for MSYS (a
1165
- # Cygwin fork). Testing 0.0.0.0 is insufficient for Windows native
1166
- # Perl (https://stackoverflow.com/a/14388707), so we also test
1167
- # individual addresses.
1163
+ # The 0.0.0.0 test achieves that for MSYS, which automatically sets
1164
+ # SO_EXCLUSIVEADDRUSE. Testing 0.0.0.0 is insufficient for Windows
1165
+ # native Perl (https://stackoverflow.com/a/14388707), so we also
1166
+ # have to test individual addresses. Doing that for 127.0.0/24
1167
+ # addresses other than 127.0.0.1 might fail with EADDRNOTAVAIL on
1168
+ # non-Linux, non-Windows kernels.
1168
1169
#
1169
- # On non-Linux, non-Windows kernels, binding to 127.0.0/24 addresses
1170
- # other than 127.0.0.1 might fail with EADDRNOTAVAIL. Binding to
1171
- # 0.0.0.0 is unnecessary on non-Windows systems.
1170
+ # Thus, 0.0.0.0 and individual 127.0.0/24 addresses are tested
1171
+ # only on Windows and only when TCP usage is requested.
1172
1172
if ($found == 1)
1173
1173
{
1174
1174
foreach my $addr (qw( 127.0.0.1) ,
1175
- $use_tcp ? qw( 127.0.0.2 127.0.0.3 0.0.0.0) : ())
1175
+ $use_tcp ? qw( 127.0.0.2 127.0.0.3 0.0.0.0) : ())
1176
+ $use_tcp && $TestLib::windows_os
1177
+ ? qw( 127.0.0.2 127.0.0.3 0.0.0.0)
1178
+ : ())
1176
1179
{
1177
1180
if (!can_bind($addr , $port ))
1178
1181
{
0 commit comments