From f1219788972c7b6b66199c54f499ff4057583ed2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20K=C3=B6sters?= Date: Tue, 20 Jul 2021 23:36:03 +0200 Subject: [PATCH] fix: state bug --- src/database/sending.rs | 18 +++++------------- src/server_server.rs | 2 ++ 2 files changed, 7 insertions(+), 13 deletions(-) diff --git a/src/database/sending.rs b/src/database/sending.rs index 44d19ed2..a07192e8 100644 --- a/src/database/sending.rs +++ b/src/database/sending.rs @@ -165,9 +165,8 @@ impl Sending { let new_events = guard.sending.servernamepduids .scan_prefix(prefix.clone()) .filter_map(|(k, _)| { - Self::parse_servercurrentevent(&k).ok() + Self::parse_servercurrentevent(&k).ok().map(|ev| (ev, k)) }) - .map(|(_, event)| event) .take(30) .collect::>(); @@ -175,16 +174,9 @@ impl Sending { if !new_events.is_empty() { // Insert pdus we found - for event in &new_events { - let mut current_key = prefix.clone(); - match event { - SendingEventType::Pdu(b) | - SendingEventType::Edu(b) => { - current_key.extend_from_slice(&b); - guard.sending.servercurrentevents.insert(¤t_key, &[]).unwrap(); - guard.sending.servernamepduids.remove(¤t_key).unwrap(); - } - } + for (_, key) in &new_events { + guard.sending.servercurrentevents.insert(&key, &[]).unwrap(); + guard.sending.servernamepduids.remove(&key).unwrap(); } drop(guard); @@ -192,7 +184,7 @@ impl Sending { futures.push( Self::handle_events( outgoing_kind.clone(), - new_events, + new_events.into_iter().map(|(event, _)| event.1).collect(), Arc::clone(&db), ) ); diff --git a/src/server_server.rs b/src/server_server.rs index 5ab8646c..f666188b 100644 --- a/src/server_server.rs +++ b/src/server_server.rs @@ -1058,6 +1058,8 @@ pub fn handle_incoming_pdu<'a>( if let Some(state_key) = &prev_pdu.state_key { state.insert((prev_pdu.kind.clone(), state_key.clone()), prev_pdu); } + + state_at_incoming_event = Some(state); } // TODO: set incoming_auth_events? }