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)