From 30b4e1d597867d1abbc410946ce758cf167d7624 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20K=C3=B6sters?= Date: Tue, 13 Apr 2021 21:31:43 +0200 Subject: [PATCH] fix: use correct state key --- src/event_auth.rs | 1 + src/lib.rs | 10 +++++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/event_auth.rs b/src/event_auth.rs index 0f6b6942..a2e62e34 100644 --- a/src/event_auth.rs +++ b/src/event_auth.rs @@ -336,6 +336,7 @@ pub fn valid_membership_change( let key = (EventType::RoomMember, target_user_id.to_string()); let current = auth_events.get(&key); + let current_membership = current.map_or(Ok::<_, Error>(member::MembershipState::Leave), |pdu| { Ok(serde_json::from_value::( diff --git a/src/lib.rs b/src/lib.rs index ac621b1b..ab4f2681 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -510,7 +510,15 @@ impl StateResolution { for aid in &event.auth_events() { if let Ok(ev) = StateResolution::get_or_load_event(room_id, &aid, event_map) { // TODO synapse check "rejected_reason", I'm guessing this is redacted_because in ruma ?? - auth_events.insert((ev.kind(), state_key.clone()), ev); + auth_events.insert( + ( + ev.kind(), + ev.state_key().ok_or_else(|| { + Error::InvalidPdu("State event had no state key".to_owned()) + })?, + ), + ev, + ); } else { log::warn!("auth event id for {} is missing {}", aid, event_id); }