diff options
author | Bert JW Regeer <bertjw@regeer.org> | 2016-06-02 16:51:50 -0600 |
---|---|---|
committer | Bert JW Regeer <bertjw@regeer.org> | 2016-06-03 14:12:15 -0600 |
commit | f7e9bf8c73602b15ab3a5c5d5b3381309fd12cef (patch) | |
tree | ac13cc4d30f78f1f4ddf9cbec34d756ef73b2c50 | |
parent | d68390aa38b57ce12f891b175b52e4aa99cdb2de (diff) | |
download | waitress-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.py | 7 |
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): |