diff options
author | Timo Kösters <timo@koesters.xyz> | 2023-06-28 17:41:55 +0200 |
---|---|---|
committer | Timo Kösters <timo@koesters.xyz> | 2023-06-28 17:44:30 +0200 |
commit | fd1ccbd3ad474e2eac801a01ca71748827dce92b (patch) | |
tree | 2bdef9f9510e92354f17ba8c6fefa17976330b61 /src | |
parent | 3a1a72df987b64d32d170e6d0996df7eca1419cd (diff) | |
download | conduit-fd1ccbd3ad474e2eac801a01ca71748827dce92b.zip |
improvement: randomize server order for alias joins
Diffstat (limited to 'src')
-rw-r--r-- | src/api/client_server/alias.rs | 9 | ||||
-rw-r--r-- | src/api/client_server/membership.rs | 2 |
2 files changed, 6 insertions, 5 deletions
diff --git a/src/api/client_server/alias.rs b/src/api/client_server/alias.rs index ab51b50..7660ca2 100644 --- a/src/api/client_server/alias.rs +++ b/src/api/client_server/alias.rs @@ -1,4 +1,5 @@ use crate::{services, Error, Result, Ruma}; +use rand::seq::SliceRandom; use regex::Regex; use ruma::{ api::{ @@ -90,10 +91,10 @@ pub(crate) async fn get_alias_helper( ) .await?; - return Ok(get_alias::v3::Response::new( - response.room_id, - response.servers, - )); + let mut servers = response.servers; + servers.shuffle(&mut rand::thread_rng()); + + return Ok(get_alias::v3::Response::new(response.room_id, servers)); } let mut room_id = None; diff --git a/src/api/client_server/membership.rs b/src/api/client_server/membership.rs index ccd8d7a..c9357b2 100644 --- a/src/api/client_server/membership.rs +++ b/src/api/client_server/membership.rs @@ -112,7 +112,7 @@ pub async fn join_room_by_id_or_alias_route( Err(room_alias) => { let response = get_alias_helper(room_alias).await?; - (response.servers.into_iter().collect(), response.room_id) + (response.servers, response.room_id) } }; |