Merge pull request #2160 from LemmyNet/rate_limit_websocket_fail

Fix rate limit check for register. Fixes #2159
asonix/no-rate-limit-errors
Nutomic 2022-03-24 21:43:02 +01:00 committed by GitHub
commit e208f0cb4d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 2 additions and 38 deletions

View File

@ -86,7 +86,6 @@ impl RateLimited {
&ip_addr, &ip_addr,
rate_limit.message, rate_limit.message,
rate_limit.message_per_second, rate_limit.message_per_second,
false,
)?; )?;
drop(limiter); drop(limiter);
@ -98,7 +97,6 @@ impl RateLimited {
&ip_addr, &ip_addr,
rate_limit.post, rate_limit.post,
rate_limit.post_per_second, rate_limit.post_per_second,
true,
)?; )?;
} }
RateLimitType::Register => { RateLimitType::Register => {
@ -107,7 +105,6 @@ impl RateLimited {
&ip_addr, &ip_addr,
rate_limit.register, rate_limit.register,
rate_limit.register_per_second, rate_limit.register_per_second,
true,
)?; )?;
} }
RateLimitType::Image => { RateLimitType::Image => {
@ -116,7 +113,6 @@ impl RateLimited {
&ip_addr, &ip_addr,
rate_limit.image, rate_limit.image,
rate_limit.image_per_second, rate_limit.image_per_second,
false,
)?; )?;
} }
RateLimitType::Comment => { RateLimitType::Comment => {
@ -125,7 +121,6 @@ impl RateLimited {
&ip_addr, &ip_addr,
rate_limit.comment, rate_limit.comment,
rate_limit.comment_per_second, rate_limit.comment_per_second,
false,
)?; )?;
} }
}; };
@ -133,34 +128,6 @@ impl RateLimited {
let res = fut.await; let res = fut.await;
// after
{
let mut limiter = self.rate_limiter.lock().await;
if res.is_ok() {
match self.type_ {
RateLimitType::Post => {
limiter.check_rate_limit_full(
self.type_,
&ip_addr,
rate_limit.post,
rate_limit.post_per_second,
false,
)?;
}
RateLimitType::Register => {
limiter.check_rate_limit_full(
self.type_,
&ip_addr,
rate_limit.register,
rate_limit.register_per_second,
false,
)?;
}
_ => (),
};
}
}
res res
} }
} }

View File

@ -53,7 +53,6 @@ impl RateLimiter {
ip: &IpAddr, ip: &IpAddr,
rate: i32, rate: i32,
per: i32, per: i32,
check_only: bool,
) -> Result<(), LemmyError> { ) -> Result<(), LemmyError> {
self.insert_ip(ip); self.insert_ip(ip);
if let Some(bucket) = self.buckets.get_mut(&type_) { if let Some(bucket) = self.buckets.get_mut(&type_) {
@ -68,7 +67,7 @@ impl RateLimiter {
rate_limit.last_checked = current; rate_limit.last_checked = current;
rate_limit.allowance += time_passed * (rate as f64 / per as f64); rate_limit.allowance += time_passed * (rate as f64 / per as f64);
if !check_only && rate_limit.allowance > rate as f64 { if rate_limit.allowance > rate as f64 {
rate_limit.allowance = rate as f64; rate_limit.allowance = rate as f64;
} }
@ -91,9 +90,7 @@ impl RateLimiter {
"too_many_requests", "too_many_requests",
)) ))
} else { } else {
if !check_only { rate_limit.allowance -= 1.0;
rate_limit.allowance -= 1.0;
}
Ok(()) Ok(())
} }
} else { } else {