diff options
Diffstat (limited to 'internal/middleware/timeout')
| -rw-r--r-- | internal/middleware/timeout/timeout.go | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/internal/middleware/timeout/timeout.go b/internal/middleware/timeout/timeout.go index 93d992da..391919c4 100644 --- a/internal/middleware/timeout/timeout.go +++ b/internal/middleware/timeout/timeout.go @@ -10,11 +10,21 @@ import ( "time" ) +var ShutdownIdleDuration time.Duration +var ShutdownIdleTimer *time.Timer + // Timeout returns a new Middleware that times out each request after the given // duration. func Timeout(d time.Duration) func(http.Handler) http.Handler { return func(h http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + if ShutdownIdleTimer != nil { + ok := ShutdownIdleTimer.Reset(ShutdownIdleDuration) + if !ok { + // Timer had reached or closed + return + } + } ctx, cancel := context.WithTimeout(r.Context(), d) defer cancel() h.ServeHTTP(w, r.WithContext(ctx)) |
