mirror of https://github.com/LemmyNet/lemmy.git
Merge pull request #2160 from LemmyNet/rate_limit_websocket_fail
Fix rate limit check for register. Fixes #2159asonix/no-rate-limit-errors
commit
e208f0cb4d
|
@ -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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
Loading…
Reference in New Issue