diff options
author | Dylan William Hardison <dylan@hardison.net> | 2018-07-02 23:09:51 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-07-02 23:09:51 +0200 |
commit | 67a2d43f4c270a33112e36cb26704cf995bcd6e6 (patch) | |
tree | b5533fee85c725026ba11c337cd79b50547eb885 | |
parent | 3cc222bb9a02ff33e5296a5d257d49173f656506 (diff) | |
download | bugzilla-67a2d43f4c270a33112e36cb26704cf995bcd6e6.tar.gz bugzilla-67a2d43f4c270a33112e36cb26704cf995bcd6e6.tar.xz |
Bug 1472755 - False positives on IP blocking logic
-rw-r--r-- | Bugzilla/Memcached.pm | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/Bugzilla/Memcached.pm b/Bugzilla/Memcached.pm index d34aaa595..f3272c194 100644 --- a/Bugzilla/Memcached.pm +++ b/Bugzilla/Memcached.pm @@ -227,11 +227,12 @@ sub should_rate_limit { my $prefix = RATE_LIMIT_PREFIX . $name . ':'; my $memcached = $self->{memcached}; + return 0 unless $name; return 0 unless $memcached; $tries //= 3; - for (0 .. $tries) { + for my $try (0 .. $tries) { my $now = time; my ($key, @keys) = map { $prefix . ( $now - $_ ) } 0 .. $rate_seconds; $memcached->add($key, 0, $rate_seconds+1); @@ -240,8 +241,9 @@ sub should_rate_limit { $tokens->{$key} = $cas->[1]++; return 1 if sum(values %$tokens) >= $rate_max; return 0 if $memcached->cas($key, @$cas, $rate_seconds+1); + WARN("retry for $prefix (try $try of $tries)"); } - return 1; + return 0; } sub clear_all { |