From bf173480e88047cb94ed5375315237604aada252 Mon Sep 17 00:00:00 2001 From: vlnst Date: Wed, 7 Oct 2026 01:21:45 +0300 Subject: [PATCH] Fix ratelimit crash under concurrent requests --- src/middleware/ratelimit.go | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/middleware/ratelimit.go b/src/middleware/ratelimit.go index d83c901..aba7864 100644 --- a/src/middleware/ratelimit.go +++ b/src/middleware/ratelimit.go @@ -56,7 +56,12 @@ func Ratelimit() gin.HandlerFunc { // subtract 1 from the value after 1 minute if the value exists and is greater than 0 time.AfterFunc(time.Minute, func() { val, ok := ipMap.Load(ip) - if ok && val.(int) > 0 { + // Concurrent requests can lose increments, so the entry may already + // have been deleted by an earlier timer. + if !ok { + return + } + if val.(int) > 0 { ipMap.Store(ip, val.(int)-1) }