From efa608e6fe456a9df254445f90dff4a24de77612 Mon Sep 17 00:00:00 2001 From: Andy Pan Date: Sun, 10 Mar 2024 23:12:56 +0800 Subject: [PATCH] net/http: do not set a deadline when Server.IdleTimeout is negative Change-Id: I0d6336e6a21aef14e7229594a335899083fa98b1 Reviewed-on: https://go-review.googlesource.com/c/go/+/570396 LUCI-TryBot-Result: Go LUCI Reviewed-by: Damien Neil Auto-Submit: Damien Neil Reviewed-by: David Chase --- src/net/http/server.go | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/net/http/server.go b/src/net/http/server.go index 648695ca1a..31b43606f5 100644 --- a/src/net/http/server.go +++ b/src/net/http/server.go @@ -2061,7 +2061,7 @@ func (c *conn) serve(ctx context.Context) { return } - if d := c.server.idleTimeout(); d != 0 { + if d := c.server.idleTimeout(); d > 0 { c.rwc.SetReadDeadline(time.Now().Add(d)) } else { c.rwc.SetReadDeadline(time.Time{}) @@ -2849,9 +2849,9 @@ type Server struct { // ReadHeaderTimeout is the amount of time allowed to read // request headers. The connection's read deadline is reset // after reading the headers and the Handler can decide what - // is considered too slow for the body. If ReadHeaderTimeout - // is zero, the value of ReadTimeout is used. If both are - // zero, there is no timeout. + // is considered too slow for the body. If zero, the value of + // ReadTimeout is used. If negative, or if zero and ReadTimeout + // is zero or negative, there is no timeout. ReadHeaderTimeout time.Duration // WriteTimeout is the maximum duration before timing out @@ -2862,9 +2862,9 @@ type Server struct { WriteTimeout time.Duration // IdleTimeout is the maximum amount of time to wait for the - // next request when keep-alives are enabled. If IdleTimeout - // is zero, the value of ReadTimeout is used. If both are - // zero, there is no timeout. + // next request when keep-alives are enabled. If zero, the value + // of ReadTimeout is used. If negative, or if zero and ReadTimeout + // is zero or negative, there is no timeout. IdleTimeout time.Duration // MaxHeaderBytes controls the maximum number of bytes the -- 2.50.0