From 81ca3677f7d2c1f0e678caad0feb320e17d695dd Mon Sep 17 00:00:00 2001
From: Guo Xiang Tan <tgx_world@hotmail.com>
Date: Thu, 1 Mar 2018 13:20:42 +0800
Subject: [PATCH] Add guard for `nil` in our `RateLimiter`.

---
 lib/rate_limiter.rb                  | 5 ++++-
 spec/components/rate_limiter_spec.rb | 2 +-
 2 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/lib/rate_limiter.rb b/lib/rate_limiter.rb
index a0bc4515be8..8645bb003d8 100644
--- a/lib/rate_limiter.rb
+++ b/lib/rate_limiter.rb
@@ -83,7 +83,10 @@ class RateLimiter
   def performed!
     return if rate_unlimited?
     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)
     end
   rescue Redis::CommandError => e
diff --git a/spec/components/rate_limiter_spec.rb b/spec/components/rate_limiter_spec.rb
index 4ee586ed7db..b7b4e652987 100644
--- a/spec/components/rate_limiter_spec.rb
+++ b/spec/components/rate_limiter_spec.rb
@@ -96,7 +96,7 @@ describe RateLimiter do
     context 'max is less than or equal to zero' do
 
       it 'should raise the right error' do
-        [-1, 0].each do |max|
+        [-1, 0, nil].each do |max|
           expect do
             RateLimiter.new(user, "a", max, 60).performed!
           end.to raise_error(RateLimiter::LimitExceeded)