From 93bd6ed2debb8799b22888766a873bb316105f94 Mon Sep 17 00:00:00 2001 From: Quentin Gliech Date: Mon, 3 Mar 2025 14:12:47 +0100 Subject: [PATCH] Handle AS users with invalid localparts edge case --- crates/syn2mas/src/migration.rs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/crates/syn2mas/src/migration.rs b/crates/syn2mas/src/migration.rs index 1cba22159..5135a5d80 100644 --- a/crates/syn2mas/src/migration.rs +++ b/crates/syn2mas/src/migration.rs @@ -181,6 +181,20 @@ async fn migrate_users( while let Some(user_res) = users_stream.next().await { let user = user_res.into_synapse("reading user")?; + + // Handling an edge case: some AS users may have invalid localparts containing + // extra `:` characters. These users are ignored and a warning is logged. + if user.appservice_id.is_some() + && user + .name + .0 + .strip_suffix(&format!(":{}", state.server_name)) + .is_some_and(|localpart| localpart.contains(':')) + { + tracing::warn!("AS user {} has invalid localpart, ignoring!", user.name.0); + continue; + } + let (mas_user, mas_password_opt) = transform_user(&user, &state.server_name, rng)?; let mut flags = UserFlags::empty();