diff options
author | Bert JW Regeer <bertjw@regeer.org> | 2016-06-02 01:47:59 -0600 |
---|---|---|
committer | Bert JW Regeer <bertjw@regeer.org> | 2016-06-03 14:11:40 -0600 |
commit | d3efcfbfe66388926fb8348d03382c5431a53cd4 (patch) | |
tree | 4e082b6585e335c4b7b6b99a9dbef81bae8f0c40 | |
parent | d437c023c9f8c25b01d1df54ba4773bf390a9fa4 (diff) | |
download | waitress-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.py | 16 |
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 |