diff --git a/tests/run-tests.py b/tests/run-tests.py --- a/tests/run-tests.py +++ b/tests/run-tests.py @@ -113,9 +113,13 @@ else: wifexited = getattr(os, "WIFEXITED", lambda x: False) # Whether to use IPv6 -def checkipv6available(port=20058): - """return true if we can listen on localhost's IPv6 ports""" - family = getattr(socket, 'AF_INET6', None) +def checksocketfamily(name, port=20058): + """return true if we can listen on localhost using family=name + + name should be either 'AF_INET', or 'AF_INET6'. + port being used is okay - EADDRINUSE is considered as successful. + """ + family = getattr(socket, name, None) if family is None: return False try: @@ -133,7 +137,8 @@ def checkipv6available(port=20058): else: return False -useipv6 = checkipv6available() +# IPv6 is used if IPv4 is not available and IPv6 is available. +useipv6 = (not checksocketfamily('AF_INET')) and checksocketfamily('AF_INET6') def checkportisavailable(port): """return true if a port seems free to bind on localhost"""