diff --git a/crates/jmap/src/auth/rate_limit.rs b/crates/jmap/src/auth/rate_limit.rs index 4859b5bd..c017a058 100644 --- a/crates/jmap/src/auth/rate_limit.rs +++ b/crates/jmap/src/auth/rate_limit.rs @@ -93,19 +93,20 @@ impl RateLimiter for Server { async fn is_http_anonymous_request_allowed(&self, addr: &IpAddr) -> trc::Result<()> { if let Some(rate) = &self.core.jmap.rate_anonymous { - if self - .core - .storage - .lookup - .is_rate_allowed( - KV_RATE_LIMIT_HTTP_ANONYMOUS, - &ip_to_bytes(addr), - rate, - false, - ) - .await - .caused_by(trc::location!())? - .is_some() + if !self.is_ip_allowed(addr) + && self + .core + .storage + .lookup + .is_rate_allowed( + KV_RATE_LIMIT_HTTP_ANONYMOUS, + &ip_to_bytes(addr), + rate, + false, + ) + .await + .caused_by(trc::location!())? + .is_some() { return Err(trc::LimitEvent::TooManyRequests.into_err()); }