]> Cypherpunks repositories - gostls13.git/commitdiff
net/http: update bundle
authorRuss Cox <rsc@golang.org>
Sat, 9 Mar 2024 04:08:13 +0000 (23:08 -0500)
committerDamien Neil <dneil@google.com>
Sun, 10 Mar 2024 07:39:08 +0000 (07:39 +0000)
go install golang.org/x/tools/cmd/bundle@latest
go generate net/http

This fixes the longtest builders, which broke at CL 570156.

Change-Id: I85e6a1c20bd0080228400a561efd750342ae2d67
Reviewed-on: https://go-review.googlesource.com/c/go/+/570276
Reviewed-by: Damien Neil <dneil@google.com>
Auto-Submit: Russ Cox <rsc@golang.org>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>

src/net/http/h2_bundle.go

index 2fc8ace61ea71b5a6689c42c107b7738e4e37247..029c584a5e385161abfb909d766895b06ad9a270 100644 (file)
@@ -7172,6 +7172,12 @@ type http2Transport struct {
        // waiting for their turn.
        StrictMaxConcurrentStreams bool
 
+       // IdleConnTimeout is the maximum amount of time an idle
+       // (keep-alive) connection will remain idle before closing
+       // itself.
+       // Zero means no limit.
+       IdleConnTimeout time.Duration
+
        // ReadIdleTimeout is the timeout after which a health check using ping
        // frame will be carried out if no frame is received on the connection.
        // Note that a ping response will is considered a received frame, so if
@@ -9938,6 +9944,15 @@ func (rl *http2clientConnReadLoop) processWindowUpdate(f *http2WindowUpdateFrame
                fl = &cs.flow
        }
        if !fl.add(int32(f.Increment)) {
+               // For stream, the sender sends RST_STREAM with an error code of FLOW_CONTROL_ERROR
+               if cs != nil {
+                       rl.endStreamError(cs, http2StreamError{
+                               StreamID: f.StreamID,
+                               Code:     http2ErrCodeFlowControl,
+                       })
+                       return nil
+               }
+
                return http2ConnectionError(http2ErrCodeFlowControl)
        }
        cc.cond.Broadcast()
@@ -10171,9 +10186,17 @@ func (rt http2noDialH2RoundTripper) RoundTrip(req *Request) (*Response, error) {
 }
 
 func (t *http2Transport) idleConnTimeout() time.Duration {
+       // to keep things backwards compatible, we use non-zero values of
+       // IdleConnTimeout, followed by using the IdleConnTimeout on the underlying
+       // http1 transport, followed by 0
+       if t.IdleConnTimeout != 0 {
+               return t.IdleConnTimeout
+       }
+
        if t.t1 != nil {
                return t.t1.IdleConnTimeout
        }
+
        return 0
 }