@@ -1111,19 +1111,22 @@ sub get_free_port
1111
1111
# Check to see if anything else is listening on this TCP port.
1112
1112
# Seek a port available for all possible listen_addresses values,
1113
1113
# so callers can harness this port for the widest range of purposes.
1114
- # The 0.0.0.0 test achieves that for post-2006 Cygwin, which
1115
- # automatically sets SO_EXCLUSIVEADDRUSE. The same holds for MSYS (a
1116
- # Cygwin fork). Testing 0.0.0.0 is insufficient for Windows native
1117
- # Perl (https://stackoverflow.com/a/14388707), so we also test
1118
- # individual addresses.
1114
+ # The 0.0.0.0 test achieves that for MSYS, which automatically sets
1115
+ # SO_EXCLUSIVEADDRUSE. Testing 0.0.0.0 is insufficient for Windows
1116
+ # native Perl (https://stackoverflow.com/a/14388707), so we also
1117
+ # have to test individual addresses. Doing that for 127.0.0/24
1118
+ # addresses other than 127.0.0.1 might fail with EADDRNOTAVAIL on
1119
+ # non-Linux, non-Windows kernels.
1119
1120
#
1120
- # On non-Linux, non-Windows kernels, binding to 127.0.0/24 addresses
1121
- # other than 127.0.0.1 might fail with EADDRNOTAVAIL. Binding to
1122
- # 0.0.0.0 is unnecessary on non-Windows systems.
1121
+ # Thus, 0.0.0.0 and individual 127.0.0/24 addresses are tested
1122
+ # only on Windows and only when TCP usage is requested.
1123
1123
if ($found == 1)
1124
1124
{
1125
1125
foreach my $addr (qw( 127.0.0.1) ,
1126
- $use_tcp ? qw( 127.0.0.2 127.0.0.3 0.0.0.0) : ())
1126
+ $use_tcp ? qw( 127.0.0.2 127.0.0.3 0.0.0.0) : ())
1127
+ $use_tcp && $TestLib::windows_os
1128
+ ? qw( 127.0.0.2 127.0.0.3 0.0.0.0)
1129
+ : ())
1127
1130
{
1128
1131
if (!can_bind($addr , $port ))
1129
1132
{
0 commit comments