From 1e76cc5cee2b5c6ad7c05763dbc1028d43b71ee2 Mon Sep 17 00:00:00 2001 From: Matthias Ahouansou Date: Wed, 10 Jul 2024 10:40:33 +0100 Subject: [PATCH] don't rate limit appservices if the registration file says they shouldn't be --- src/api/ruma_wrapper/axum.rs | 6 +++++- src/service/rate_limiting/mod.rs | 4 ++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/api/ruma_wrapper/axum.rs b/src/api/ruma_wrapper/axum.rs index 18d1baad..92abb4db 100644 --- a/src/api/ruma_wrapper/axum.rs +++ b/src/api/ruma_wrapper/axum.rs @@ -324,7 +324,11 @@ where let target = if let Some(server) = sender_servername.clone() { Target::Server(server) } else if let Some(appservice) = appservice_info.clone() { - Target::Appservice(appservice.registration.id) + if appservice.registration.rate_limited.unwrap_or(true) { + Target::Appservice(appservice.registration.id) + } else { + Target::None + } } else if let Some(user) = sender_user.clone() { Target::User(user) } else { diff --git a/src/service/rate_limiting/mod.rs b/src/service/rate_limiting/mod.rs index fb72fec9..b33b2381 100644 --- a/src/service/rate_limiting/mod.rs +++ b/src/service/rate_limiting/mod.rs @@ -55,6 +55,10 @@ impl Service { } pub fn update_or_reject(&self, target: Target, metadata: Metadata) -> Result<(), Duration> { + if target == Target::None { + return Ok(()); + } + let restriction = metadata.into(); let arrival = Instant::now();