summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTimo Kösters <timo@koesters.xyz>2023-06-28 17:41:55 +0200
committerTimo Kösters <timo@koesters.xyz>2023-06-28 17:44:30 +0200
commitfd1ccbd3ad474e2eac801a01ca71748827dce92b (patch)
tree2bdef9f9510e92354f17ba8c6fefa17976330b61 /src
parent3a1a72df987b64d32d170e6d0996df7eca1419cd (diff)
downloadconduit-fd1ccbd3ad474e2eac801a01ca71748827dce92b.zip
improvement: randomize server order for alias joins
Diffstat (limited to 'src')
-rw-r--r--src/api/client_server/alias.rs9
-rw-r--r--src/api/client_server/membership.rs2
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)
}
};