diff options
| -rw-r--r-- | packages/meshbay-node/src/meshbay_node/daemon.py | 3 | ||||
| -rw-r--r-- | packages/meshbay-node/src/meshbay_node/platform.py | 19 |
2 files changed, 22 insertions, 0 deletions
diff --git a/packages/meshbay-node/src/meshbay_node/daemon.py b/packages/meshbay-node/src/meshbay_node/daemon.py index 47241cd..d616b0c 100644 --- a/packages/meshbay-node/src/meshbay_node/daemon.py +++ b/packages/meshbay-node/src/meshbay_node/daemon.py @@ -1634,6 +1634,9 @@ def _systemctl_user(verb: str, unit: str, *, not_running_hint: str, def main() -> None: import argparse + from meshbay_node.platform import use_compatible_event_loop + use_compatible_event_loop() + parser = argparse.ArgumentParser(description="MeshBay Node daemon") parser.add_argument("command", nargs="?", choices=["init", "reset", "status", "gek-init", diff --git a/packages/meshbay-node/src/meshbay_node/platform.py b/packages/meshbay-node/src/meshbay_node/platform.py index bc48169..4bd8e35 100644 --- a/packages/meshbay-node/src/meshbay_node/platform.py +++ b/packages/meshbay-node/src/meshbay_node/platform.py @@ -1,10 +1,29 @@ """Platform-specific paths and tool resolution for meshbay-node.""" +import asyncio import os import shutil import sys from pathlib import Path +# ── Event loop ─────────────────────────────────────────────────────────────── + + +def use_compatible_event_loop() -> None: + """ + aiortc's ICE stack (aioice) does not run on Windows' default + ProactorEventLoop — a DataChannel handshake never completes and the + connection hangs. Select the SelectorEventLoop before the loop is created. + + Cost: SelectorEventLoop cannot spawn subprocesses on Windows, so ffmpeg + streaming (asyncio.create_subprocess_exec in webrtc_server.py) does not work + under it. The video path needs a thread-based runner on Windows — tracked + for the port. No effect off Windows. + """ + if sys.platform == "win32": + asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy()) + + # ── Directories ────────────────────────────────────────────────────────────── |