diff --git a/src/api/server_server.rs b/src/api/server_server.rs index 58db059f..54c02764 100644 --- a/src/api/server_server.rs +++ b/src/api/server_server.rs @@ -595,14 +595,25 @@ async fn request_well_known(destination: &str) -> Option { .await; debug!("Got well known response"); debug!("Well known response: {:?}", response); + if let Err(e) = &response { debug!("Well known error: {e:?}"); return None; } + let text = response.ok()?.text().await; + debug!("Got well known response text"); debug!("Well known response text: {:?}", text); + + if text.as_ref().ok()?.len() > 10000 { + info!("Well known response for destination '{destination}' exceeded past 10000 characters, assuming no well-known."); + return None; + } + let body: serde_json::Value = serde_json::from_str(&text.ok()?).ok()?; + debug!("serde_json body of well known text: {}", body); + Some(body.get("m.server")?.as_str()?.to_owned()) }