From d85ae2bce3cfeb8f4d3216330a46b5f5abf66987 Mon Sep 17 00:00:00 2001 From: Norbert Hauriel Date: Thu, 3 Feb 2022 09:26:25 +0100 Subject: [PATCH] Doc(limiter): clarify variable name 'expire' (#1742) This clarifies the intent of variable 'expire' by renaming to the more understandable 'resetInSec'. All mentions are renamed as well. --- middleware/limiter/limited_fixed.go | 6 +++--- middleware/limiter/limited_sliding.go | 22 +++++++++++----------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/middleware/limiter/limited_fixed.go b/middleware/limiter/limited_fixed.go index 7936ca7a31..3e41a2c9cd 100644 --- a/middleware/limiter/limited_fixed.go +++ b/middleware/limiter/limited_fixed.go @@ -64,7 +64,7 @@ func (FixedWindow) New(cfg Config) fiber.Handler { e.currHits++ // Calculate when it resets in seconds - expire := e.exp - ts + resetInSec := e.exp - ts // Set how many hits we have left remaining := cfg.Max - e.currHits @@ -79,7 +79,7 @@ func (FixedWindow) New(cfg Config) fiber.Handler { if remaining < 0 { // Return response with Retry-After header // https://tools.ietf.org/html/rfc6584 - c.Set(fiber.HeaderRetryAfter, strconv.FormatUint(expire, 10)) + c.Set(fiber.HeaderRetryAfter, strconv.FormatUint(resetInSec, 10)) // Call LimitReached handler return cfg.LimitReached(c) @@ -101,7 +101,7 @@ func (FixedWindow) New(cfg Config) fiber.Handler { // We can continue, update RateLimit headers c.Set(xRateLimitLimit, max) c.Set(xRateLimitRemaining, strconv.Itoa(remaining)) - c.Set(xRateLimitReset, strconv.FormatUint(expire, 10)) + c.Set(xRateLimitReset, strconv.FormatUint(resetInSec, 10)) return err } diff --git a/middleware/limiter/limited_sliding.go b/middleware/limiter/limited_sliding.go index 5f6ed434d6..9369998d29 100644 --- a/middleware/limiter/limited_sliding.go +++ b/middleware/limiter/limited_sliding.go @@ -77,10 +77,10 @@ func (SlidingWindow) New(cfg Config) fiber.Handler { e.currHits++ // Calculate when it resets in seconds - expire := e.exp - ts + resetInSec := e.exp - ts // weight = time until current window reset / total window length - weight := float64(expire) / float64(expiration) + weight := float64(resetInSec) / float64(expiration) // rate = request count in previous window - weight + request count in current window rate := int(float64(e.prevHits)*weight) + e.currHits @@ -89,18 +89,18 @@ func (SlidingWindow) New(cfg Config) fiber.Handler { remaining := cfg.Max - rate // Update storage. Garbage collect when the next window ends. - // |-------------------------|-------------------------| - // ^ ^ ^ ^ - // ts e.exp End sample window End next window - // <-----------> - // expire - // expire = e.exp - ts - time until end of current window. + // |--------------------------|--------------------------| + // ^ ^ ^ ^ + // ts e.exp End sample window End next window + // <------------> + // resetInSec + // resetInSec = e.exp - ts - time until end of current window. // duration + expiration = end of next window. // Because we don't want to garbage collect in the middle of a window // we add the expiration to the duration. // Otherwise after the end of "sample window", attackers could launch // a new request with the full window length. - manager.set(key, e, time.Duration(expire+expiration)*time.Second) + manager.set(key, e, time.Duration(resetInSec+expiration)*time.Second) // Unlock entry mux.Unlock() @@ -109,7 +109,7 @@ func (SlidingWindow) New(cfg Config) fiber.Handler { if remaining < 0 { // Return response with Retry-After header // https://tools.ietf.org/html/rfc6584 - c.Set(fiber.HeaderRetryAfter, strconv.FormatUint(expire, 10)) + c.Set(fiber.HeaderRetryAfter, strconv.FormatUint(resetInSec, 10)) // Call LimitReached handler return cfg.LimitReached(c) @@ -131,7 +131,7 @@ func (SlidingWindow) New(cfg Config) fiber.Handler { // We can continue, update RateLimit headers c.Set(xRateLimitLimit, max) c.Set(xRateLimitRemaining, strconv.Itoa(remaining)) - c.Set(xRateLimitReset, strconv.FormatUint(expire, 10)) + c.Set(xRateLimitReset, strconv.FormatUint(resetInSec, 10)) return err }