fix: saturate ratelimits to not cause overflows (#957)

Signed-off-by: Zomatree <me@zomatree.live>
This commit is contained in:
Zomatree
2026-08-26 23:52:37 +01:00
committed by GitHub
parent ee4d998692
commit 5b696776cb
4 changed files with 5 additions and 5 deletions

View File

@@ -98,7 +98,7 @@ impl Entry {
if now.as_millis() > self.reset {
limit
} else {
(limit + 1).saturating_sub(self.used)
(limit.saturating_add(1)).saturating_sub(self.used)
}
}
@@ -167,7 +167,7 @@ impl Ratelimiter {
entry.is_expired(now);
entry.save(&mut conn, key).await;
ratelimiter.remaining -= 1;
ratelimiter.remaining = ratelimiter.remaining.saturating_sub(1);
Ok(ratelimiter)
}

View File

@@ -100,5 +100,5 @@ async fn main() -> Result<(), std::io::Error> {
// Configure TCP listener and bind
let address = SocketAddr::from((Ipv4Addr::UNSPECIFIED, 14704));
let listener = TcpListener::bind(&address).await?;
axum::serve(listener, app.into_make_service()).await
axum::serve(listener, app.into_make_service_with_connect_info::<SocketAddr>()).await
}

View File

@@ -108,5 +108,5 @@ async fn main() -> Result<(), std::io::Error> {
tracing::info!("Play around with the API: http://localhost:14706/scalar");
let address = SocketAddr::from((Ipv4Addr::UNSPECIFIED, 14706));
let listener = TcpListener::bind(&address).await?;
axum::serve(listener, app.into_make_service()).await
axum::serve(listener, app.into_make_service_with_connect_info::<SocketAddr>()).await
}

View File

@@ -65,5 +65,5 @@ async fn main() -> Result<(), std::io::Error> {
tracing::info!("Play around with the API: http://localhost:14705/scalar");
let address = SocketAddr::from((Ipv4Addr::UNSPECIFIED, 14705));
let listener = TcpListener::bind(&address).await?;
axum::serve(listener, app.into_make_service()).await
axum::serve(listener, app.into_make_service_with_connect_info::<SocketAddr>()).await
}