From d60b7bf8143c46b10dbf418b3b5f4a2e08c9f803 Mon Sep 17 00:00:00 2001 From: Jonas Platte Date: Tue, 7 Sep 2021 13:45:54 +0200 Subject: [PATCH] state-res: Filter out `None`s from conflicted_state earlier --- crates/ruma-state-res/src/lib.rs | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/crates/ruma-state-res/src/lib.rs b/crates/ruma-state-res/src/lib.rs index 68e6b506..b85c35b0 100644 --- a/crates/ruma-state-res/src/lib.rs +++ b/crates/ruma-state-res/src/lib.rs @@ -82,7 +82,7 @@ where // synapse says `full_set = {eid for eid in full_conflicted_set if eid in event_map}` let all_conflicted: HashSet<_> = get_auth_chain_diff(auth_chain_sets) // FIXME: Use into_values() once MSRV >= 1.54 - .chain(conflicting.into_iter().flat_map(|(_k, v)| v).flatten()) + .chain(conflicting.into_iter().flat_map(|(_k, v)| v)) // Don't honor events we cannot "verify" .filter(|id| fetch_event(id).is_some()) .collect(); @@ -159,9 +159,7 @@ where /// State is determined to be conflicting if for the given key (EventType, StateKey) there is not /// exactly one eventId. This includes missing events, if one state_set includes an event that none /// of the other have this is a conflicting event. -pub fn separate( - state_sets: &[StateMap], -) -> (StateMap, StateMap>>) { +pub fn separate(state_sets: &[StateMap]) -> (StateMap, StateMap>) { info!("separating {} sets of events into conflicted/unconflicted", state_sets.len()); let mut unconflicted_state = StateMap::new(); @@ -179,7 +177,7 @@ pub fn separate( unconflicted_state.insert(key.clone(), id.clone()); } else { conflicted_state - .insert(key.clone(), event_ids.into_iter().map(|o| o.cloned()).collect()); + .insert(key.clone(), event_ids.into_iter().filter_map(|o| o.cloned()).collect()); } }