From 02ea33de9d6b8b1997c8dbaa95d95d0f916296b6 Mon Sep 17 00:00:00 2001 From: agfn Date: Mon, 11 Oct 2021 18:41:49 +0800 Subject: [PATCH] fix: can not listen on ipv4 when having ipv6 address --- RangeHTTPServer/__main__.py | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/RangeHTTPServer/__main__.py b/RangeHTTPServer/__main__.py index 00c9eb4..b5312dd 100755 --- a/RangeHTTPServer/__main__.py +++ b/RangeHTTPServer/__main__.py @@ -21,10 +21,25 @@ 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, nargs='?', help='Specify alternate port [default: 8000]') args = parser.parse_args() -SimpleHTTPServer.test(HandlerClass=RangeRequestHandler, port=args.port) +SimpleHTTPServer.test(HandlerClass=RangeRequestHandler, + ServerClass=DualStackServer, + port=args.port)