Skip to content

Commit ee7abce

Browse files
committed
fix ipv6 and directory flag
1 parent fa4e088 commit ee7abce

File tree

1 file changed

+17
-4
lines changed

1 file changed

+17
-4
lines changed

Lib/http/server.py

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -976,9 +976,9 @@ def test(HandlerClass=BaseHTTPRequestHandler,
976976
ServerClass.address_family, addr = _get_best_family(bind, port)
977977
HandlerClass.protocol_version = protocol
978978

979-
if tls_cert:
980-
server = ThreadingHTTPSServer(addr, HandlerClass, certfile=tls_cert,
981-
keyfile=tls_key, password=tls_password)
979+
if issubclass(ServerClass, HTTPSServer):
980+
server = ServerClass(addr, HandlerClass, certfile=tls_cert,
981+
keyfile=tls_key, password=tls_password)
982982
else:
983983
server = ServerClass(addr, HandlerClass)
984984

@@ -1051,9 +1051,22 @@ def finish_request(self, request, client_address):
10511051
self.RequestHandlerClass(request, client_address, self,
10521052
directory=args.directory)
10531053

1054+
class HTTPSDualStackServer(ThreadingHTTPSServer):
1055+
def server_bind(self):
1056+
with contextlib.suppress(Exception):
1057+
self.socket.setsockopt(
1058+
socket.IPPROTO_IPV6, socket.IPV6_V6ONLY, 0)
1059+
return super().server_bind()
1060+
1061+
def finish_request(self, request, client_address):
1062+
self.RequestHandlerClass(request, client_address, self,
1063+
directory=args.directory)
1064+
1065+
ServerClass = HTTPSDualStackServer if args.tls_cert else DualStackServer
1066+
10541067
test(
10551068
HandlerClass=SimpleHTTPRequestHandler,
1056-
ServerClass=DualStackServer,
1069+
ServerClass=ServerClass,
10571070
port=args.port,
10581071
bind=args.bind,
10591072
protocol=args.protocol,

0 commit comments

Comments
 (0)