mirror of
https://github.com/discourse/discourse.git
synced 2025-02-25 18:55:32 -06:00
Add guard for nil in our RateLimiter.
This commit is contained in:
@@ -83,7 +83,10 @@ class RateLimiter
|
|||||||
def performed!
|
def performed!
|
||||||
return if rate_unlimited?
|
return if rate_unlimited?
|
||||||
now = Time.now.to_i
|
now = Time.now.to_i
|
||||||
if max <= 0 || (eval_lua(PERFORM_LUA, PERFORM_LUA_SHA, [prefixed_key], [now, @secs, @max]) == 0)
|
|
||||||
|
if ((max || 0) <= 0) ||
|
||||||
|
(eval_lua(PERFORM_LUA, PERFORM_LUA_SHA, [prefixed_key], [now, @secs, @max]) == 0)
|
||||||
|
|
||||||
raise RateLimiter::LimitExceeded.new(seconds_to_wait, @type)
|
raise RateLimiter::LimitExceeded.new(seconds_to_wait, @type)
|
||||||
end
|
end
|
||||||
rescue Redis::CommandError => e
|
rescue Redis::CommandError => e
|
||||||
|
|||||||
@@ -96,7 +96,7 @@ describe RateLimiter do
|
|||||||
context 'max is less than or equal to zero' do
|
context 'max is less than or equal to zero' do
|
||||||
|
|
||||||
it 'should raise the right error' do
|
it 'should raise the right error' do
|
||||||
[-1, 0].each do |max|
|
[-1, 0, nil].each do |max|
|
||||||
expect do
|
expect do
|
||||||
RateLimiter.new(user, "a", max, 60).performed!
|
RateLimiter.new(user, "a", max, 60).performed!
|
||||||
end.to raise_error(RateLimiter::LimitExceeded)
|
end.to raise_error(RateLimiter::LimitExceeded)
|
||||||
|
|||||||
Reference in New Issue
Block a user