From a2e0ee24bcdd1121bfc6a7c3ce94318bc094fb4e Mon Sep 17 00:00:00 2001 From: Tim Robinson Date: Wed, 18 May 2016 08:22:56 -0400 Subject: [PATCH] Remove expiring on every failed request, add Max expire duration. --- node_modules/c9/ratelimit.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/node_modules/c9/ratelimit.js b/node_modules/c9/ratelimit.js index 0b3cdcd3..48997420 100644 --- a/node_modules/c9/ratelimit.js +++ b/node_modules/c9/ratelimit.js @@ -1,6 +1,8 @@ var error = require("http-error"); var _ = require("lodash"); +var MAX_EXPIRE_INTERVAL = 5000; + /** * In memory rate limiter as connect middleware */ @@ -10,7 +12,7 @@ function ratelimit(key, duration, max) { var requests = Object.create(null); // in case there handles like 'constructor' setInterval(function() { Object.keys(requests).forEach(expireRequests); - }, duration * 0.75); + }, Math.min(duration * 0.75, MAX_EXPIRE_INTERVAL)); function expireRequests(handle) { var requestsForHandle = requests[handle]; @@ -34,11 +36,9 @@ function ratelimit(key, duration, max) { requests[handle] = requests[handle] || []; if (requests[handle].length >= max) { - if (expireRequests(handle) && requests[handle].length >= max) { - var err = new error.TooManyRequests("Rate limit exceeded"); - err.retryIn = Math.min(duration, 5000); - return next(err); - } + var err = new error.TooManyRequests("Rate limit exceeded"); + err.retryIn = Math.min(duration, 5000); + return next(err); } requests[handle].push(Date.now());