diff options
author | Rémi Verschelde <rverschelde@gmail.com> | 2024-04-16 13:30:51 +0200 |
---|---|---|
committer | Rémi Verschelde <rverschelde@gmail.com> | 2024-04-16 13:30:51 +0200 |
commit | 79173d1fd8c4b82a7735bc552ae6018abafc4d03 (patch) | |
tree | 5f837da5c6771c894e5fa58b0a377755bece4e92 /platform/web/serve.py | |
parent | 8901e8776a7947952c21bef487e690a464aacfc3 (diff) | |
parent | 67a51c93167a47313ca8c3d5073e90706ceed693 (diff) | |
download | redot-engine-79173d1fd8c4b82a7735bc552ae6018abafc4d03.tar.gz |
Merge pull request #90698 from Faless/fix/web/serve_py_dual_stack_windows
[Web] Fix serve.py utility on Windows
Diffstat (limited to 'platform/web/serve.py')
-rwxr-xr-x | platform/web/serve.py | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/platform/web/serve.py b/platform/web/serve.py index 6a3efcc463..89dff63ca3 100755 --- a/platform/web/serve.py +++ b/platform/web/serve.py @@ -5,9 +5,20 @@ from pathlib import Path import os import sys import argparse +import contextlib +import socket import subprocess +# See cpython GH-17851 and GH-17864. +class DualStackServer(HTTPServer): + 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() + + class CORSRequestHandler(SimpleHTTPRequestHandler): def end_headers(self): self.send_header("Cross-Origin-Opener-Policy", "same-origin") @@ -32,7 +43,7 @@ def serve(root, port, run_browser): print("Opening the served URL in the default browser (use `--no-browser` or `-n` to disable this).") shell_open(f"http://127.0.0.1:{port}") - test(CORSRequestHandler, HTTPServer, port=port) + test(CORSRequestHandler, DualStackServer, port=port) if __name__ == "__main__": |