commit 6c55c2b65a60652decc87f5645641ce0605d2c26
parent dadd67536a5b7fc6e0b24666db1a8b6eb3d39a1f
Author: triesap <tyson@radroots.org>
Date: Sun, 14 Jun 2026 16:33:40 -0700
groups: narrow write-side relay access
Diffstat:
6 files changed, 25 insertions(+), 25 deletions(-)
diff --git a/crates/tangle_bench/src/lib.rs b/crates/tangle_bench/src/lib.rs
@@ -1108,7 +1108,7 @@ fn materialize_dataset(
max_pending_events: usize,
) -> Result<MaterializedBenchRelay, String> {
let store_config = bench_store_config(run_name)?;
- let mut relay = BaseRelay::open_with_groups(
+ let relay = BaseRelay::open_with_groups(
&store_config,
relay_limits(max_pending_events),
&group_config()?,
diff --git a/crates/tangle_runtime/src/relay/core.rs b/crates/tangle_runtime/src/relay/core.rs
@@ -577,13 +577,13 @@ impl BaseRelay {
})
}
- pub fn handle_event(&mut self, event: Event) -> Result<RelayMessage, BaseRelayError> {
+ pub fn handle_event(&self, event: Event) -> Result<RelayMessage, BaseRelayError> {
self.handle_event_with_group_auth(event, &GroupAuthContext::unauthenticated())
.map(BaseRelayEventWrite::into_message)
}
pub fn handle_event_with_auth(
- &mut self,
+ &self,
event: Event,
auth: &BaseAuthState,
) -> Result<RelayMessage, BaseRelayError> {
@@ -592,7 +592,7 @@ impl BaseRelay {
}
pub(crate) fn handle_event_with_auth_report(
- &mut self,
+ &self,
event: Event,
auth: &BaseAuthState,
) -> Result<BaseRelayEventWrite, BaseRelayError> {
@@ -636,7 +636,7 @@ impl BaseRelay {
}
fn handle_event_with_group_auth(
- &mut self,
+ &self,
event: Event,
auth: &GroupAuthContext,
) -> Result<BaseRelayEventWrite, BaseRelayError> {
@@ -733,7 +733,7 @@ impl BaseRelay {
let store_offset = StoreOffset::new(self.store.store_event(&pocket_event)?);
let mut stored_offsets = vec![store_offset];
if !matches!(class, GroupEventClass::NonGroup)
- && let Some(groups) = self.groups.as_mut()
+ && let Some(groups) = self.groups.as_ref()
{
stored_offsets.extend(groups.after_source_event_stored(
&self.store,
@@ -1434,7 +1434,7 @@ mod tests {
#[test]
fn base_relay_count_dedupes_overlapping_visible_filters() {
- let mut relay = test_relay("base-relay-count-dedupe", 8);
+ let relay = test_relay("base-relay-count-dedupe", 8);
let market_tag = Tag::from_parts("t", &["market"]).expect("tag");
let first = signed_event_at(7, 1, vec![market_tag.clone()], "first", 1_714_124_433);
let second = signed_event_at(8, 1, vec![market_tag], "second", 1_714_124_434);
@@ -1486,7 +1486,7 @@ mod tests {
#[test]
fn base_relay_event_path_rejects_invalid_signatures_and_skips_ephemeral_storage() {
- let mut relay = test_relay("base-relay-event-store-path", 8);
+ let relay = test_relay("base-relay-event-store-path", 8);
let valid = signed_public_event(7, 1, Vec::new(), "valid");
let signature_source = signed_public_event(8, 1, Vec::new(), "signature source");
let invalid = Event::new(
@@ -1527,7 +1527,7 @@ mod tests {
#[test]
fn base_relay_enforces_nip70_protected_event_author_auth() {
- let mut relay = test_relay("base-relay-nip70-protected", 8);
+ let relay = test_relay("base-relay-nip70-protected", 8);
let protected = signed_public_event(
7,
1,
@@ -1560,7 +1560,7 @@ mod tests {
#[test]
fn base_relay_rejects_group_marked_events_before_group_service() {
- let mut relay = test_relay("base-relay-group-reject", 4);
+ let relay = test_relay("base-relay-group-reject", 4);
let event = signed_public_event(
7,
1,
@@ -1581,7 +1581,7 @@ mod tests {
#[test]
fn base_relay_rejects_client_submitted_relay_generated_group_state() {
- let mut relay = test_relay("base-relay-generated-group-reject", 4);
+ let relay = test_relay("base-relay-generated-group-reject", 4);
for kind in NIP29_RELAY_GENERATED_KIND_VALUES {
let event = signed_public_event(
7,
@@ -1644,7 +1644,7 @@ mod tests {
#[test]
fn group_event_write_requires_auth_before_storage() {
let owner = signer(7).public_key().clone();
- let mut relay = test_relay_with_groups(
+ let relay = test_relay_with_groups(
"base-relay-group-auth-required",
4,
&enabled_groups_for_owner(&owner),
@@ -1675,7 +1675,7 @@ mod tests {
#[test]
fn group_create_updates_projection_and_stores_generated_snapshots() {
let owner = signer(7).public_key().clone();
- let mut relay = test_relay_with_groups(
+ let relay = test_relay_with_groups(
"base-relay-group-create",
4,
&enabled_groups_for_owner(&owner),
@@ -1711,7 +1711,7 @@ mod tests {
fn group_join_materializes_relay_membership_event() {
let owner = signer(7).public_key().clone();
let joiner = signer(8).public_key().clone();
- let mut relay = test_relay_with_groups(
+ let relay = test_relay_with_groups(
"base-relay-group-join",
4,
&enabled_groups_for_owner_with_public_join(&owner),
@@ -1757,7 +1757,7 @@ mod tests {
#[test]
fn group_join_requires_public_join_policy() {
let owner = signer(7).public_key().clone();
- let mut relay = test_relay_with_groups(
+ let relay = test_relay_with_groups(
"base-relay-group-join-default-deny",
4,
&enabled_groups_for_owner(&owner),
@@ -1837,7 +1837,7 @@ mod tests {
let owner = signer(7).public_key().clone();
let member = signer(8).public_key().clone();
let target = signer(9).public_key().clone();
- let mut relay = test_relay_with_groups(
+ let relay = test_relay_with_groups(
"base-relay-group-member-flow",
4,
&enabled_groups_for_owner_with_public_join(&owner),
@@ -1962,7 +1962,7 @@ mod tests {
let owner = signer(7).public_key().clone();
let outsider_auth = authenticated_state(8);
let owner_auth = authenticated_state(7);
- let mut relay = test_relay_with_groups(
+ let relay = test_relay_with_groups(
"base-relay-group-delete-event",
4,
&enabled_groups_for_owner(&owner),
@@ -2057,7 +2057,7 @@ mod tests {
fn group_delete_tombstone_hides_events_and_rejects_future_writes() {
let owner = signer(7).public_key().clone();
let auth = authenticated_state(7);
- let mut relay = test_relay_with_groups(
+ let relay = test_relay_with_groups(
"base-relay-group-delete-tombstone",
4,
&enabled_groups_for_owner(&owner),
@@ -2109,7 +2109,7 @@ mod tests {
let owner = signer(7).public_key().clone();
let outsider_auth = authenticated_state(8);
let owner_auth = authenticated_state(7);
- let mut relay = test_relay_with_groups(
+ let relay = test_relay_with_groups(
"base-relay-group-strict-policy-flow",
4,
&enabled_groups_for_owner(&owner),
@@ -2254,7 +2254,7 @@ mod tests {
let owner = signer(7).public_key().clone();
let owner_auth = authenticated_state(7);
let unauth = BaseAuthState::new("wss://relay.radroots.test", 60, 600).expect("auth state");
- let mut relay = test_relay_with_groups(
+ let relay = test_relay_with_groups(
"base-relay-private-offset-read",
4,
&enabled_groups_for_owner(&owner),
diff --git a/crates/tangle_runtime/src/runtime.rs b/crates/tangle_runtime/src/runtime.rs
@@ -606,7 +606,7 @@ impl TangleRuntimeHandle {
return Ok(vec![message]);
}
let (result, group_outbox_pending_events) = {
- let mut relay = self.inner.relay.lock().await;
+ let relay = self.inner.relay.lock().await;
let result = relay.handle_event_with_auth_report(event, auth)?;
let pending_events =
is_group_event.then(|| relay.group_outbox_pending_events());
diff --git a/crates/tangle_runtime/tests/base_relay_v2.rs b/crates/tangle_runtime/tests/base_relay_v2.rs
@@ -179,7 +179,7 @@ fn auth_integration_covers_challenge_edges() {
fn group_auth_lifecycle_membership_and_flag_flows_pass_in_process() {
let config = test_store_config("group-flows");
let groups = group_config_with_public_join();
- let mut relay = BaseRelay::open_with_groups(
+ let relay = BaseRelay::open_with_groups(
&config,
relay_limits(8),
&groups,
@@ -387,7 +387,7 @@ fn relay_override_role_changes_generate_admin_snapshots() {
#[test]
fn group_join_requests_are_denied_by_default() {
let config = test_store_config("group-public-join-default");
- let mut relay = BaseRelay::open_with_groups(
+ let relay = BaseRelay::open_with_groups(
&config,
relay_limits(8),
&group_config(),
diff --git a/crates/tangle_runtime/tests/ops_truthfulness.rs b/crates/tangle_runtime/tests/ops_truthfulness.rs
@@ -86,7 +86,7 @@ fn operations_surfaces_match_enforced_runtime_contracts() {
assert_eq!(bound.status, "ready");
assert_eq!(bound.checks.server_bind, "ready");
- let mut relay = config.open_relay().expect("relay");
+ let relay = config.open_relay().expect("relay");
let protected = tangle_v2_event(
FixtureKey::Member,
1_714_124_433,
diff --git a/crates/tangle_runtime/tests/phase2_acceptance_targets.rs b/crates/tangle_runtime/tests/phase2_acceptance_targets.rs
@@ -1036,7 +1036,7 @@ fn protected_events_require_author_auth_before_nip70_is_advertised() {
.expect("info config")
.build_document()
.expect("document");
- let mut relay = config.open_relay().expect("relay");
+ let relay = config.open_relay().expect("relay");
let protected = tangle_v2_event(
FixtureKey::Member,
1_714_124_433,