aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/Lib/http/server.py
diff options
context:
space:
mode:
authorggqlq <124190229+ggqlq@users.noreply.github.com>2025-05-24 20:19:20 +0800
committerGitHub <noreply@github.com>2025-05-24 12:19:20 +0000
commit2fd09b011031f3c00c342b44e02e2817010e507c (patch)
treef9dac9db828642c5dee7567ef7b1ac6f8c4efb5a /Lib/http/server.py
parent5d9c8fe3f6168785cb608dddd3010042f39bb226 (diff)
downloadcpython-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.py15
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,