From: Miss Islington (bot) <31488909+miss-islington@users.noreply.github.com> Date: Mon, 6 Jan 2020 13:28:27 +0000 (-0800) Subject: bpo-38907: Suppress any exception when attempting to set V6ONLY. (GH-17864) (GH-17865) X-Git-Tag: v3.8.2rc1~99 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=33cb4a62bf6848093b7a05c9794582d204798b1b;p=thirdparty%2FPython%2Fcpython.git bpo-38907: Suppress any exception when attempting to set V6ONLY. (GH-17864) (GH-17865) Fixes error attempting to bind to IPv4 address. (cherry picked from commit 7cdc31a14c824000cbe8b487900c9826a33f6940) Co-authored-by: Jason R. Coombs Co-authored-by: Jason R. Coombs --- diff --git a/Lib/http/server.py b/Lib/http/server.py index 0fe44bdaa73f..38f7accad7a3 100644 --- a/Lib/http/server.py +++ b/Lib/http/server.py @@ -103,6 +103,7 @@ import socketserver import sys import time import urllib.parse +import contextlib from functools import partial from http import HTTPStatus @@ -1284,7 +1285,10 @@ if __name__ == '__main__': # 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() test(