From 1563632a12195aa8630590260604783bcb0c493f Mon Sep 17 00:00:00 2001 From: yuzh Date: Mon, 20 Apr 2026 02:14:41 +0800 Subject: [PATCH] fix ipv4/ipv6 dual stack support on windows (backport from cpython) --- RangeHTTPServer/__main__.py | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/RangeHTTPServer/__main__.py b/RangeHTTPServer/__main__.py index ed8d29c..07dd644 100755 --- a/RangeHTTPServer/__main__.py +++ b/RangeHTTPServer/__main__.py @@ -20,6 +20,18 @@ from . import RangeRequestHandler import argparse +import contextlib +import socket + + +class DualStackServer(SimpleHTTPServer.ThreadingHTTPServer): + def server_bind(self): + # suppress exception when protocol is IPv4 + with contextlib.suppress(Exception): + self.socket.setsockopt(socket.IPPROTO_IPV6, socket.IPV6_V6ONLY, 0) + return super().server_bind() + + parser = argparse.ArgumentParser() parser.add_argument('port', action='store', default=8000, type=int, @@ -28,4 +40,4 @@ help='bind to this address (default: all interfaces)') args = parser.parse_args() -SimpleHTTPServer.test(HandlerClass=RangeRequestHandler, port=args.port, bind=args.bind) +SimpleHTTPServer.test(HandlerClass=RangeRequestHandler, ServerClass=DualStackServer, port=args.port, bind=args.bind)