diff options
author | ggqlq <124190229+ggqlq@users.noreply.github.com> | 2025-05-24 20:19:20 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-05-24 12:19:20 +0000 |
commit | 2fd09b011031f3c00c342b44e02e2817010e507c (patch) | |
tree | f9dac9db828642c5dee7567ef7b1ac6f8c4efb5a /Lib/http/server.py | |
parent | 5d9c8fe3f6168785cb608dddd3010042f39bb226 (diff) | |
download | cpython-2fd09b011031f3c00c342b44e02e2817010e507c.tar.gz cpython-2fd09b011031f3c00c342b44e02e2817010e507c.zip |
gh-134168: fix `http.server` CLI support for IPv6 and `--directory` when serving over HTTPS (#134169)
Diffstat (limited to 'Lib/http/server.py')
-rw-r--r-- | Lib/http/server.py | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/Lib/http/server.py b/Lib/http/server.py index f6d1b998f42..ef10d185932 100644 --- a/Lib/http/server.py +++ b/Lib/http/server.py @@ -980,8 +980,8 @@ def test(HandlerClass=BaseHTTPRequestHandler, HandlerClass.protocol_version = protocol if tls_cert: - server = ThreadingHTTPSServer(addr, HandlerClass, certfile=tls_cert, - keyfile=tls_key, password=tls_password) + server = ServerClass(addr, HandlerClass, certfile=tls_cert, + keyfile=tls_key, password=tls_password) else: server = ServerClass(addr, HandlerClass) @@ -1041,7 +1041,7 @@ def _main(args=None): parser.error(f"Failed to read TLS password file: {e}") # ensure dual-stack is not disabled; ref #38907 - class DualStackServer(ThreadingHTTPServer): + class DualStackServerMixin: def server_bind(self): # suppress exception when protocol is IPv4 @@ -1054,9 +1054,16 @@ def _main(args=None): self.RequestHandlerClass(request, client_address, self, directory=args.directory) + class HTTPDualStackServer(DualStackServerMixin, ThreadingHTTPServer): + pass + class HTTPSDualStackServer(DualStackServerMixin, ThreadingHTTPSServer): + pass + + ServerClass = HTTPSDualStackServer if args.tls_cert else HTTPDualStackServer + test( HandlerClass=SimpleHTTPRequestHandler, - ServerClass=DualStackServer, + ServerClass=ServerClass, port=args.port, bind=args.bind, protocol=args.protocol, |