aboutsummaryrefslogtreecommitdiffstats
path: root/packages/meshbay-node/src/meshbay_node/transport
diff options
context:
space:
mode:
authorChristophe Besson <cbesson@gmail.com>2026-10-13 00:30:39 +0200
committerChristophe Besson <cbesson@gmail.com>2026-10-13 00:30:39 +0200
commitefbcff05721e71f1fdfcc30b7ee1b44ca1670762 (patch)
tree23018295b653510900ac24b71a780d74e32a01a2 /packages/meshbay-node/src/meshbay_node/transport
parente9a93c21ff28daa6f4017849b42fe073a5ee2005 (diff)
downloadmeshbay-efbcff05721e71f1fdfcc30b7ee1b44ca1670762.tar.gz
test(node): run the connection processes on Windows, source and frozen
Connection processes and the larger UDP receive buffer were written and measured on Linux; nothing had run on Windows, and `meshbay-node.exe webrtc-worker` had never run from a frozen build on any system. - test_connection_processes.py failed on Windows (8 tests): the selector loop the suite uses there cannot start a process. A test marked `daemon_loop` now runs on the daemon's own loop, chosen through pytest-asyncio's loop factories. - The build starts both frozen executables as connection processes and carries a connection through each (smoke-connection-process.py). The daemon's own smoke test never signs in to a hub, which is when the processes start. - The warning for a receive buffer below what was asked named net.core.rmem_max on every system; it names it on Linux only. Windows grants the 4 MB. Measured on an installed build in service mode, docs/WINDOWS-PORT.md §5.12: two processes at startup and on a live change, a browser's handshake, chat, a 200 MB download over 8 connections across both processes, an upload, a video stream, and stop, restart and start leaving no process behind. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Diffstat (limited to 'packages/meshbay-node/src/meshbay_node/transport')
-rw-r--r--packages/meshbay-node/src/meshbay_node/transport/webrtc_server.py11
1 files changed, 8 insertions, 3 deletions
diff --git a/packages/meshbay-node/src/meshbay_node/transport/webrtc_server.py b/packages/meshbay-node/src/meshbay_node/transport/webrtc_server.py
index 1976ad4..fea642a 100644
--- a/packages/meshbay-node/src/meshbay_node/transport/webrtc_server.py
+++ b/packages/meshbay-node/src/meshbay_node/transport/webrtc_server.py
@@ -24,6 +24,7 @@ Signaling flow (handled externally by the hub):
import asyncio
import logging
+import sys
import time
from typing import Any
@@ -157,11 +158,15 @@ class WebRTCTransport:
if got < udp_buffer.WANTED:
# Said once, with what to change: nothing else would tell an
# operator why uploads to this node stay around 6 MB/s.
+ # The remedy is Linux's: Windows grants what is asked (measured,
+ # 4 MB and beyond), and naming a sysctl there would send its
+ # operator looking for a setting the system does not have.
+ remedy = (f"; raise net.core.rmem_max to {udp_buffer.WANTED} to lift it"
+ if sys.platform.startswith("linux") else "")
log.warning(
"UDP receive buffer is %d KB per socket, below the %d KB an "
- "upload needs to run at full speed; raise net.core.rmem_max "
- "to %d to lift it", got // 1024, udp_buffer.WANTED // 1024,
- udp_buffer.WANTED)
+ "upload needs to run at full speed%s",
+ got // 1024, udp_buffer.WANTED // 1024, remedy)
else:
log.info("UDP receive buffer: %d KB per socket", got // 1024)
self._workers = WorkerPool(