diff --git a/src/server_server.rs b/src/server_server.rs
index 3ea1c0abdbeff78f1a35362d4ae9f98a74956ae2..7b0bd58bec20d7ed9ed9ab64de06b3effc4c5e50 100644
--- a/src/server_server.rs
+++ b/src/server_server.rs
@@ -1267,10 +1267,10 @@ pub fn handle_incoming_pdu<'a>(
         // 14. Use state resolution to find new room state
         let new_room_state = if fork_states.is_empty() {
             return Err("State is empty.".to_owned());
-        } else if fork_states.len() == 1 {
+        } else if fork_states.iter().skip(1).all(|f| &fork_states[0] == f) {
             // There was only one state, so it has to be the room's current state (because that is
             // always included)
-            debug!("Skipping stateres because there is no new state.");
+            warn!("Skipping stateres because there is no new state.");
             fork_states[0]
                 .iter()
                 .map(|(k, pdu)| (k.clone(), pdu.event_id.clone()))