diff options
| author | Christophe Besson <cbesson@gmail.com> | 2026-09-01 18:56:12 +0200 |
|---|---|---|
| committer | Christophe Besson <cbesson@gmail.com> | 2026-09-01 18:56:12 +0200 |
| commit | f8598f57222028ba5600c9be507394dbcbb6f459 (patch) | |
| tree | 70ce3cd790b614b65f73aced545f84a79333310d /packages/meshbay-node/tests/test_link_preview_request.py | |
| parent | 9f7698340e5148f8f247fe0d70a57f7f37f1f72d (diff) | |
| download | meshbay-f8598f57222028ba5600c9be507394dbcbb6f459.tar.gz | |
fix(node): bring the QUIC chat and stream handlers to WebRTC parity
The unified handshake reached QUIC in Phase 11.5, but the chat and
stream handlers did not get the authorization rules the WebRTC path
gained at the same time:
- _do_chat_message_sync took `sender_id` from the wire, so an
authenticated peer could post as anyone (NS6 / M2a). It is now the
authenticated session's id, always.
- chat used a connection-global peer registry and read chat_store from
the top-level context, so on a multi-group node a message from one
group fanned out to peers of the others (M2b / H1). Both are now
resolved per group via _peer_registry() / _group_ctx(), mirroring
the WebRTC path. The QUIC peer set is kept separate from the WebRTC
one in the same group context — the two session types have
different _send signatures and no cross-transport fan-out is wired.
- _do_stream_segment_sync ran `subprocess.run(timeout=30)` on the
event loop with no concurrency cap, so one request stalled the whole
node and any member could fork-bomb it with ffmpeg (M2c). Extraction
now runs in a thread behind a small semaphore, spawned as a tracked
task (cancelled on connection_lost).
Also corrects the stale docstring claiming C6 is still open here — the
GEK proof has been enforced on this transport since 11.5.
No behaviour change for shipping clients: none speak QUIC, and the
listener is off by default (previous commit).
Third security review, finding M2.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011pG75yGK3NthNfyjH74omG
Diffstat (limited to 'packages/meshbay-node/tests/test_link_preview_request.py')
0 files changed, 0 insertions, 0 deletions