feat: rate-limit ceil Retry-After to superior integer

This commit is contained in:
Pierre-Yves Aillet 2021-11-16 16:38:11 +01:00 committed by GitHub
parent 83a7f10c75
commit 95fabeae73
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -4,6 +4,7 @@ package ratelimiter
import ( import (
"context" "context"
"fmt" "fmt"
"math"
"net/http" "net/http"
"time" "time"
@ -174,7 +175,7 @@ func (rl *rateLimiter) ServeHTTP(w http.ResponseWriter, r *http.Request) {
} }
func (rl *rateLimiter) serveDelayError(ctx context.Context, w http.ResponseWriter, r *http.Request, delay time.Duration) { func (rl *rateLimiter) serveDelayError(ctx context.Context, w http.ResponseWriter, r *http.Request, delay time.Duration) {
w.Header().Set("Retry-After", fmt.Sprintf("%.0f", delay.Seconds())) w.Header().Set("Retry-After", fmt.Sprintf("%.0f", math.Ceil(delay.Seconds())))
w.Header().Set("X-Retry-In", delay.String()) w.Header().Set("X-Retry-In", delay.String())
w.WriteHeader(http.StatusTooManyRequests) w.WriteHeader(http.StatusTooManyRequests)