From d2f3403a188f159c8fdea8aa365515fd222f6a90 Mon Sep 17 00:00:00 2001 From: bitfl0wer Date: Thu, 20 Apr 2023 19:47:08 +0200 Subject: [PATCH] Improve limit check --- src/limit.rs | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/src/limit.rs b/src/limit.rs index 9e16375..5b007b9 100644 --- a/src/limit.rs +++ b/src/limit.rs @@ -100,18 +100,26 @@ impl LimitedRequester { } fn can_send_request(&mut self, limit_type: LimitType) -> bool { - let limits = self.limits_rate.get(&limit_type); - - match limits { - Some(limit) => { - if limit.remaining > 0 { - true - } else { - false + let limits = &self.limits_rate; + // Check if all of the limits in this vec have at least one remaining request + let constant_limits: Vec<&LimitType> = [ + &LimitType::Error, + &LimitType::Global, + &LimitType::Ip, + &limit_type, + ] + .to_vec(); + for limit in constant_limits.iter() { + match limits.get(&limit) { + Some(limit) => { + if limit.remaining == 0 { + return false; + } } + None => return false, } - None => false, } + return true; } fn update_limits(&mut self, response: &Response, limit_type: LimitType) {