summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBert JW Regeer <bertjw@regeer.org>2016-06-11 19:41:45 -0600
committerBert JW Regeer <bertjw@regeer.org>2016-06-11 19:41:45 -0600
commit7c63ad06f354de68d233e5b0556cee601eaf3704 (patch)
tree189626710b3991e2752d82e598c94059867bb869
parent4dd418adc98d4a524d2804c415feadd37666febf (diff)
downloadwaitress-7c63ad06f354de68d233e5b0556cee601eaf3704.tar.gz
Set IPv6 socket to be IPv6 only
On systems that allow for IPv6 mapped IPv4 we want to make sure we explicitly set the socket to be IPv6 only. This way we don't run into the issue whereby we try to bind to the same socket twice (once with an mapped IPv6, and then on IPv4) because bind() won't like that.
-rw-r--r--waitress/server.py3
1 files changed, 3 insertions, 0 deletions
diff --git a/waitress/server.py b/waitress/server.py
index 25a690b..bf4e467 100644
--- a/waitress/server.py
+++ b/waitress/server.py
@@ -157,6 +157,9 @@ class BaseWSGIServer(logging_dispatcher, object):
self.asyncore.dispatcher.__init__(self, _sock, map=map)
if _sock is None:
self.create_socket(self.family, self.socktype)
+ if self.family == socket.AF_INET6: # pragma: nocover
+ self.socket.setsockopt(socket.IPPROTO_IPV6, socket.IPV6_V6ONLY, 1)
+
self.set_reuse_addr()
self.bind_server_socket()
self.effective_host, self.effective_port = self.getsockname()