Skip to content

Commit

Permalink
Only ever test for non-127.0.0.1 addresses on Windows in PostgresNode
Browse files Browse the repository at this point in the history
This has been found to cause hangs where tcp usage is forced.

Alexey Kodratov

Discussion: https://postgr.es/m/[email protected]

Backpatch to all live branches
  • Loading branch information
adunstan committed Apr 21, 2021
1 parent d84ffff commit d064afc
Showing 1 changed file with 12 additions and 9 deletions.
21 changes: 12 additions & 9 deletions src/test/perl/PostgresNode.pm
Original file line number Diff line number Diff line change
Expand Up @@ -1332,19 +1332,22 @@ sub get_free_port
# Check to see if anything else is listening on this TCP port.
# Seek a port available for all possible listen_addresses values,
# so callers can harness this port for the widest range of purposes.
# The 0.0.0.0 test achieves that for post-2006 Cygwin, which
# automatically sets SO_EXCLUSIVEADDRUSE. The same holds for MSYS (a
# Cygwin fork). Testing 0.0.0.0 is insufficient for Windows native
# Perl (https://stackoverflow.com/a/14388707), so we also test
# individual addresses.
# The 0.0.0.0 test achieves that for MSYS, which automatically sets
# SO_EXCLUSIVEADDRUSE. Testing 0.0.0.0 is insufficient for Windows
# native Perl (https://stackoverflow.com/a/14388707), so we also
# have to test individual addresses. Doing that for 127.0.0/24
# addresses other than 127.0.0.1 might fail with EADDRNOTAVAIL on
# non-Linux, non-Windows kernels.
#
# On non-Linux, non-Windows kernels, binding to 127.0.0/24 addresses
# other than 127.0.0.1 might fail with EADDRNOTAVAIL. Binding to
# 0.0.0.0 is unnecessary on non-Windows systems.
# Thus, 0.0.0.0 and individual 127.0.0/24 addresses are tested
# only on Windows and only when TCP usage is requested.
if ($found == 1)
{
foreach my $addr (qw(127.0.0.1),
$use_tcp ? qw(127.0.0.2 127.0.0.3 0.0.0.0) : ())
$use_tcp ? qw(127.0.0.2 127.0.0.3 0.0.0.0) : ())
$use_tcp && $TestLib::windows_os
? qw(127.0.0.2 127.0.0.3 0.0.0.0)
: ())
{
if (!can_bind($addr, $port))
{
Expand Down

0 comments on commit d064afc

Please sign in to comment.