summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBert JW Regeer <bertjw@regeer.org>2016-06-02 01:47:59 -0600
committerBert JW Regeer <bertjw@regeer.org>2016-06-03 14:11:40 -0600
commitd3efcfbfe66388926fb8348d03382c5431a53cd4 (patch)
tree4e082b6585e335c4b7b6b99a9dbef81bae8f0c40
parentd437c023c9f8c25b01d1df54ba4773bf390a9fa4 (diff)
downloadwaitress-d3efcfbfe66388926fb8348d03382c5431a53cd4.tar.gz
Use getaddrinfo() to get actual list of wanted sockets
This will resolve hostnames and return all of the possible addresses we would want to bind to.
-rw-r--r--waitress/adjustments.py16
1 files changed, 13 insertions, 3 deletions
diff --git a/waitress/adjustments.py b/waitress/adjustments.py
index fc05de3..420d5f7 100644
--- a/waitress/adjustments.py
+++ b/waitress/adjustments.py
@@ -230,12 +230,22 @@ class Adjustments(object):
(host, port) = (i, self.port)
try:
- (host, port) = (host, int(port))
+ if '[' in host and ']' in host:
+ host = host.strip('[').rstrip(']')
+
+ for s in socket.getaddrinfo(
+ host,
+ port,
+ 0,
+ 0,
+ socket.IPPROTO_TCP,
+ socket.AI_PASSIVE | socket.AI_ADDRCONFIG
+ ):
+ (family, socktype, proto, _, sockaddr) = s
+ wanted_sockets.append((family, socktype, proto, sockaddr))
except:
raise ValueError('Invalid host/port specified.')
- wanted_sockets.append((host, port))
-
self.listen = wanted_sockets
@classmethod