diff options
author | Zuul <zuul@review.openstack.org> | 2019-01-28 16:21:02 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2019-01-28 16:21:02 +0000 |
commit | 6a7417702d41a61b4da1c34c0b4d0e2e0038bc16 (patch) | |
tree | 934042a38277e2f7d38b7ddcea6be1d09b16d69b | |
parent | 7a6ef8ac60283425107e192085125c732aa1eb7c (diff) | |
parent | ca733f3e0789e5161288b0dcf2d9660890e8ba44 (diff) | |
download | gear-6a7417702d41a61b4da1c34c0b4d0e2e0038bc16.tar.gz |
Merge "Prefer ipv6 for listen addrs if available"0.13.0
-rw-r--r-- | gear/__init__.py | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/gear/__init__.py b/gear/__init__.py index 57d80e3..8c13c45 100644 --- a/gear/__init__.py +++ b/gear/__init__.py @@ -2760,9 +2760,14 @@ class Server(BaseClientServer): if all([self.ssl_key, self.ssl_cert, self.ssl_ca]): self.use_ssl = True - for res in socket.getaddrinfo(host, self.port, socket.AF_UNSPEC, - socket.SOCK_STREAM, 0, - socket.AI_PASSIVE): + # Get all valid passive listen addresses, then sort by family to prefer + # ipv6 if available. + addrs = socket.getaddrinfo(host, self.port, socket.AF_UNSPEC, + socket.SOCK_STREAM, 0, + socket.AI_PASSIVE | + socket.AI_ADDRCONFIG) + addrs.sort(key=lambda addr: addr[0], reverse=True) + for res in addrs: af, socktype, proto, canonname, sa = res try: self.socket = socket.socket(af, socktype, proto) |