summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBert JW Regeer <bertjw@regeer.org>2016-06-02 16:51:50 -0600
committerBert JW Regeer <bertjw@regeer.org>2016-06-03 14:12:15 -0600
commitf7e9bf8c73602b15ab3a5c5d5b3381309fd12cef (patch)
treeac13cc4d30f78f1f4ddf9cbec34d756ef73b2c50
parentd68390aa38b57ce12f891b175b52e4aa99cdb2de (diff)
downloadwaitress-f7e9bf8c73602b15ab3a5c5d5b3381309fd12cef.tar.gz
Use getnameinfo with getsockname
getsockname() returns an IPv4/IPv6 specific sockaddr, which is supposed to be treated as an opaque object. Instead here we we use getnameinfo() which returns a (host, port) tuple that can be used. It takes the sockaddr as an argument.
-rw-r--r--waitress/server.py7
1 files changed, 5 insertions, 2 deletions
diff --git a/waitress/server.py b/waitress/server.py
index fbd5c9d..3973c85 100644
--- a/waitress/server.py
+++ b/waitress/server.py
@@ -228,20 +228,23 @@ class BaseWSGIServer(logging_dispatcher, object):
if (not channel.requests) and channel.last_activity < cutoff:
channel.will_close = True
-class TcpWSGIServer(BaseWSGIServer):
+class TcpWSGIServer(BaseWSGIServer):
def bind_server_socket(self):
(_, _, _, sockaddr) = self.sockinfo
self.bind(sockaddr)
def getsockname(self):
- return self.socket.getsockname()
+ return self.socketmod.getnameinfo(
+ self.socket.getsockname(),
+ self.socketmod.NI_NUMERICSERV)
def set_socket_options(self, conn):
for (level, optname, value) in self.adj.socket_options:
conn.setsockopt(level, optname, value)
+
if hasattr(socket, 'AF_UNIX'):
class UnixWSGIServer(BaseWSGIServer):