diff --git a/src/server_server.rs b/src/server_server.rs
index e8c19dbcbc70ff30bc8b8418106a294cf3773188..5ab8646c7ef16f421dfc64c3ec1982eb8b6a3251 100644
--- a/src/server_server.rs
+++ b/src/server_server.rs
@@ -1027,42 +1027,37 @@ pub fn handle_incoming_pdu<'a>(
                 .map_err(|_| "Failed talking to db".to_owned())?
                 .map(|shortstatehash| db.rooms.state_full_ids(shortstatehash).ok())
                 .flatten();
-            if let Some(mut state) = state {
-                if db
-                    .rooms
-                    .get_pdu(prev_event)
-                    .ok()
-                    .flatten()
-                    .ok_or_else(|| "Could not find prev event, but we know the state.".to_owned())?
-                    .state_key
-                    .is_some()
-                {
-                    state.insert(prev_event.clone());
-                }
-                state_at_incoming_event = Some(
-                    fetch_and_handle_events(
-                        db,
-                        origin,
-                        &state.into_iter().collect::<Vec<_>>(),
-                        &room_id,
-                        pub_key_map,
-                    )
-                    .await
-                    .map_err(|_| "Failed to fetch state events locally".to_owned())?
-                    .into_iter()
-                    .map(|pdu| {
+            if let Some(state) = state {
+                let mut state = fetch_and_handle_events(
+                    db,
+                    origin,
+                    &state.into_iter().collect::<Vec<_>>(),
+                    &room_id,
+                    pub_key_map,
+                )
+                .await
+                .map_err(|_| "Failed to fetch state events locally".to_owned())?
+                .into_iter()
+                .map(|pdu| {
+                    (
                         (
-                            (
-                                pdu.kind.clone(),
-                                pdu.state_key
-                                    .clone()
-                                    .expect("events from state_full_ids are state events"),
-                            ),
-                            pdu,
-                        )
-                    })
-                    .collect(),
-                );
+                            pdu.kind.clone(),
+                            pdu.state_key
+                                .clone()
+                                .expect("events from state_full_ids are state events"),
+                        ),
+                        pdu,
+                    )
+                })
+                .collect::<HashMap<_, _>>();
+
+                let prev_pdu = db.rooms.get_pdu(prev_event).ok().flatten().ok_or_else(|| {
+                    "Could not find prev event, but we know the state.".to_owned()
+                })?;
+
+                if let Some(state_key) = &prev_pdu.state_key {
+                    state.insert((prev_pdu.kind.clone(), state_key.clone()), prev_pdu);
+                }
             }
             // TODO: set incoming_auth_events?
         }