diff --git a/scripts/test.py b/scripts/test.py index a772313..977e042 100644 --- a/scripts/test.py +++ b/scripts/test.py @@ -3,6 +3,7 @@ import http.server import json import logging import os +import socket import socketserver import subprocess import sys @@ -37,9 +38,35 @@ class MyHandler(http.server.SimpleHTTPRequestHandler): def start_server(): - with socketserver.TCPServer(("", PORT), MyHandler, True) as httpd: - httpd.serve_forever() - atexit.register(httpd.shutdown) + def serve_forever(httpd): + with httpd: + atexit.register(httpd.shutdown) + httpd.serve_forever() + + ipv4_server = socketserver.TCPServer( + ("", PORT), + MyHandler, + bind_and_activate=False + ) + ipv4_server.socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) + ipv4_server.server_bind() + ipv4_server.server_activate() + + ipv6_server = socketserver.TCPServer( + ("::", PORT), + MyHandler, + bind_and_activate=False + ) + ipv6_server.address_family = socket.AF_INET6 + ipv6_server.socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) + ipv6_server.server_bind() + ipv6_server.server_activate() + + # Run servers in separate threads + threading.Thread(target=serve_forever, args=(ipv4_server,), daemon=True).start() + threading.Thread(target=serve_forever, args=(ipv6_server,), daemon=True).start() + + print(f"Serving on port {PORT} (IPv4 and IPv6)") def start_ua2f(u: str):