aboutsummaryrefslogtreecommitdiff
path: root/internal/net/server.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/net/server.go')
-rw-r--r--internal/net/server.go5
1 files changed, 5 insertions, 0 deletions
diff --git a/internal/net/server.go b/internal/net/server.go
index 71e34c8..8e23a1f 100644
--- a/internal/net/server.go
+++ b/internal/net/server.go
@@ -808,6 +808,11 @@ func (s *Server) Shutdown() {
if remaining <= 0 {
break
}
+ // Cap each wait so one stalled writer cannot consume the whole
+ // budget and starve every later session's flush.
+ if remaining > 200*time.Millisecond {
+ remaining = 200 * time.Millisecond
+ }
select {
case <-sess.writeDone:
case <-time.After(remaining):