From 68f95f99c28753a7725cd4107078978477ed2f63 Mon Sep 17 00:00:00 2001 From: realaravinth Date: Sun, 6 Jun 2021 16:14:52 +0530 Subject: [PATCH] mcaptcha decrement by count --- src/master/embedded/counter.rs | 12 ++++++++++++ src/mcaptcha.rs | 12 ++++++++++++ 2 files changed, 24 insertions(+) diff --git a/src/master/embedded/counter.rs b/src/master/embedded/counter.rs index ecb0d07..a0b8eb4 100644 --- a/src/master/embedded/counter.rs +++ b/src/master/embedded/counter.rs @@ -264,6 +264,18 @@ pub mod tests { .unwrap() } + #[test] + fn mcaptcha_decrement_by_works() { + let mut m = get_mcaptcha(); + for _ in 0..100 { + m.add_visitor(); + } + m.decrement_visitor_by(50); + assert_eq!(m.get_visitors(), 50); + m.decrement_visitor_by(500); + assert_eq!(m.get_visitors(), 0); + } + #[actix_rt::test] async fn counter_defense_tightenup_works() { let addr: MyActor = get_counter().start(); diff --git a/src/mcaptcha.rs b/src/mcaptcha.rs index d166393..a5919c2 100644 --- a/src/mcaptcha.rs +++ b/src/mcaptcha.rs @@ -98,6 +98,18 @@ impl MCaptcha { } } + /// decrements the visitor count by specified count + #[inline] + pub fn decrement_visitor_by(&mut self, count: u32) { + if self.visitor_threshold > 0 { + if self.visitor_threshold >= count { + self.visitor_threshold -= count; + } else { + self.visitor_threshold = 0; + } + } + } + /// get current difficulty factor #[inline] pub fn get_difficulty(&self) -> u32 {