aboutsummaryrefslogtreecommitdiff
path: root/internal/middleware
diff options
context:
space:
mode:
Diffstat (limited to 'internal/middleware')
-rw-r--r--internal/middleware/timeout/timeout.go10
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))