summaryrefslogtreecommitdiffstats
path: root/platform/web/serve.py
diff options
context:
space:
mode:
authorRémi Verschelde <rverschelde@gmail.com>2024-04-16 13:30:51 +0200
committerRémi Verschelde <rverschelde@gmail.com>2024-04-16 13:30:51 +0200
commit79173d1fd8c4b82a7735bc552ae6018abafc4d03 (patch)
tree5f837da5c6771c894e5fa58b0a377755bece4e92 /platform/web/serve.py
parent8901e8776a7947952c21bef487e690a464aacfc3 (diff)
parent67a51c93167a47313ca8c3d5073e90706ceed693 (diff)
downloadredot-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-xplatform/web/serve.py13
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__":