# HG changeset patch # User Jun Wu # Date 2017-02-17 08:59:09 # Node ID a489ee9b2852e907a9f714e9fd723f5ea7eb9d48 # Parent e7eca6e1372ebf58da8f1619760a586f5b245fae runtests: prefer IPv4 to IPv6 To make IPv6 work, there are multiple areas that need to fix. Before they all get fixed, use IPv4 by default. This should fix tests caused on IPv6 systems. 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"""