summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZuul <zuul@review.openstack.org>2019-01-28 16:21:02 +0000
committerGerrit Code Review <review@openstack.org>2019-01-28 16:21:02 +0000
commit6a7417702d41a61b4da1c34c0b4d0e2e0038bc16 (patch)
tree934042a38277e2f7d38b7ddcea6be1d09b16d69b
parent7a6ef8ac60283425107e192085125c732aa1eb7c (diff)
parentca733f3e0789e5161288b0dcf2d9660890e8ba44 (diff)
downloadgear-6a7417702d41a61b4da1c34c0b4d0e2e0038bc16.tar.gz
Merge "Prefer ipv6 for listen addrs if available"0.13.0
-rw-r--r--gear/__init__.py11
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)