diff --git a/server/middlewares/rateLimiter.ts b/server/middlewares/rateLimiter.ts index aaedc3610..2ef85e925 100644 --- a/server/middlewares/rateLimiter.ts +++ b/server/middlewares/rateLimiter.ts @@ -2,6 +2,7 @@ import { Context, Next } from "koa"; import { defaults } from "lodash"; import env from "@server/env"; import { RateLimitExceededError } from "@server/errors"; +import Logger from "@server/logging/Logger"; import Metrics from "@server/logging/Metrics"; import Redis from "@server/redis"; import RateLimiter from "@server/utils/RateLimiter"; @@ -27,19 +28,23 @@ export function defaultRateLimiter() { try { await limiter.consume(key); } catch (rateLimiterRes) { - ctx.set("Retry-After", `${rateLimiterRes.msBeforeNext / 1000}`); - ctx.set("RateLimit-Limit", `${limiter.points}`); - ctx.set("RateLimit-Remaining", `${rateLimiterRes.remainingPoints}`); - ctx.set( - "RateLimit-Reset", - `${new Date(Date.now() + rateLimiterRes.msBeforeNext)}` - ); + if (rateLimiterRes.points) { + ctx.set("Retry-After", `${rateLimiterRes.msBeforeNext / 1000}`); + ctx.set("RateLimit-Limit", `${limiter.points}`); + ctx.set("RateLimit-Remaining", `${rateLimiterRes.remainingPoints}`); + ctx.set( + "RateLimit-Reset", + `${new Date(Date.now() + rateLimiterRes.msBeforeNext)}` + ); - Metrics.increment("rate_limit.exceeded", { - path: ctx.path, - }); + Metrics.increment("rate_limit.exceeded", { + path: ctx.path, + }); - throw RateLimitExceededError(); + throw RateLimitExceededError(); + } else { + Logger.error("Rate limiter error", rateLimiterRes); + } } return next();