[Python-checkins] bpo-38907: Suppress any exception when attempting to set V6ONLY. (GH-17864)

Jason R. Coombs webhook-mailer at python.org
Mon Jan 6 07:59:44 EST 2020

commit: 7cdc31a14c824000cbe8b487900c9826a33f6940
branch: master
author: Jason R. Coombs <jaraco at jaraco.com>
committer: GitHub <noreply at github.com>
date: 2020-01-06T07:59:36-05:00

bpo-38907: Suppress any exception when attempting to set V6ONLY. (GH-17864)

Fixes error attempting to bind to IPv4 address.

M Lib/http/server.py

diff --git a/Lib/http/server.py b/Lib/http/server.py
index b9a2717681f53..c6e5ed6ea0e00 100644
--- a/Lib/http/server.py
+++ b/Lib/http/server.py
@@ -103,6 +103,7 @@
 import sys
 import time
 import urllib.parse
+import contextlib
 from functools import partial
 from http import HTTPStatus
@@ -1286,7 +1287,10 @@ def test(HandlerClass=BaseHTTPRequestHandler,
     # ensure dual-stack is not disabled; ref #38907
     class DualStackServer(ThreadingHTTPServer):
         def server_bind(self):
-            self.socket.setsockopt(socket.IPPROTO_IPV6, socket.IPV6_V6ONLY, 0)
+            # suppress exception when protocol is IPv4
+            with contextlib.suppress(Exception):
+                self.socket.setsockopt(
+                    socket.IPPROTO_IPV6, socket.IPV6_V6ONLY, 0)
             return super().server_bind()

More information about the Python-checkins mailing list