summaryrefslogtreecommitdiffstats
path: root/packages/meshbay-node
diff options
context:
space:
mode:
authorChristophe Besson <cbesson@gmail.com>2026-08-14 19:25:39 +0200
committerChristophe Besson <cbesson@gmail.com>2026-08-14 19:25:39 +0200
commitd324792d68503109ab99616af6c85ee37045e169 (patch)
treedea71c8e115742beaac5952c8c65481bbc130b07 /packages/meshbay-node
parentcfe49407abb3eb48b996ab6d08d66985f29846f0 (diff)
downloadmeshbay-d324792d68503109ab99616af6c85ee37045e169.tar.gz
fix(node): an operator keeps their role when reconnecting
An operator's roster row is node-wide, so looking it up by the group they happen to be opening found nothing and the client was told it had no role on a node it administers. Falls back to the node-wide row. Surfaced by running the live workflow twice: the first pass pins, the second is recognised — and only the second exercised this path. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Diffstat (limited to 'packages/meshbay-node')
-rw-r--r--packages/meshbay-node/src/meshbay_node/transport/webrtc_server.py6
1 files changed, 5 insertions, 1 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 5ea6376..fe4e3c2 100644
--- a/packages/meshbay-node/src/meshbay_node/transport/webrtc_server.py
+++ b/packages/meshbay-node/src/meshbay_node/transport/webrtc_server.py
@@ -713,7 +713,11 @@ class WebRTCPeerSession:
"key_changed",
f"pinned={known['pk_ed25519'][:16]} presented={pk_ed_b64[:16]}")
return
- member = await roster.get_member(group_id, user_id)
+ # An operator's row is node-wide (empty group), so a lookup for the
+ # group they happen to be opening finds nothing. Fall back to it, or
+ # the client is told it has no role on a node it administers.
+ member = (await roster.get_member(group_id, user_id)
+ or await roster.get_member("", user_id))
await self._join_ok(
user_id, pk_x_raw, session_group,
role=member["role"] if member else "",