]> Cypherpunks repositories - gostls13.git/commitdiff
[release-branch.go1.14] net/http: update bundled x/net/http2
authorDamien Neil <dneil@google.com>
Fri, 29 Jan 2021 20:04:28 +0000 (12:04 -0800)
committerDmitri Shuralyov <dmitshur@golang.org>
Mon, 1 Feb 2021 20:12:13 +0000 (20:12 +0000)
Updates bundled http2 to x/net git rev 4acb7895a for:

http2: send a nil error if we cancel a delayed body write
https://golang.org/cl/288114

http2: wait until the request body has been written
https://golang.org/cl/288113

Created by:

go get -d golang.org/x/net@release-branch.go1.14
go mod tidy
go mod vendor
go generate -run=bundle std

Fixes #42586.

Change-Id: Ib5aecaeb1deb13b8f0e51a864b60eede248aef0d
Reviewed-on: https://go-review.googlesource.com/c/go/+/288115
Trust: Damien Neil <dneil@google.com>
Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org>
src/go.mod
src/go.sum
src/net/http/h2_bundle.go
src/vendor/modules.txt

index faf848d5df6026b0095d0e5da4c24ef71ed5af0d..ec6bd9805291adadcfd90ef3f472852c74bc6bab 100644 (file)
@@ -4,7 +4,7 @@ go 1.14
 
 require (
        golang.org/x/crypto v0.0.0-20200128174031-69ecbb4d6d5d
-       golang.org/x/net v0.0.0-20201029202311-70d85028bad3
+       golang.org/x/net v0.0.0-20210129194117-4acb7895a057
        golang.org/x/sys v0.0.0-20200201011859-915c9c3d4ccf // indirect
        golang.org/x/text v0.3.3-0.20191031172631-4b67af870c6f // indirect
 )
index 58d6621a2fbeb4a844988b03e1ad6c2ac2a37ead..171e083b819487f7d51d82257f08afea6953e80d 100644 (file)
@@ -2,8 +2,8 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk
 golang.org/x/crypto v0.0.0-20200128174031-69ecbb4d6d5d h1:9FCpayM9Egr1baVnV1SX0H87m+XB0B8S0hAMi99X/3U=
 golang.org/x/crypto v0.0.0-20200128174031-69ecbb4d6d5d/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
 golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
-golang.org/x/net v0.0.0-20201029202311-70d85028bad3 h1:zhmuDiUI8/S25xjIBeUn8XwfxP7SKYR41pTuOoa1O+w=
-golang.org/x/net v0.0.0-20201029202311-70d85028bad3/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20210129194117-4acb7895a057 h1:HThQeV5c0Ab/Puir+q6mC97b7+3dfZdsLWMLoBrzo68=
+golang.org/x/net v0.0.0-20210129194117-4acb7895a057/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
 golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20200201011859-915c9c3d4ccf h1:+4j7oujXP478CVb/AFvHJmVX5+Pczx2NGts5yirA0oY=
index 0e9139b9efff9042a881463eae04dac6d12303b3..8f39241b2c271314b12de551546a5eda57ceaef5 100644 (file)
@@ -7593,6 +7593,9 @@ func (cc *http2ClientConn) roundTrip(req *Request) (res *Response, gotErrAfterRe
                        // we can keep it.
                        bodyWriter.cancel()
                        cs.abortRequestBodyWrite(http2errStopReqBodyWrite)
+                       if hasBody && !bodyWritten {
+                               <-bodyWriter.resc
+                       }
                }
                if re.err != nil {
                        cc.forgetStreamID(cs.ID)
@@ -7613,6 +7616,7 @@ func (cc *http2ClientConn) roundTrip(req *Request) (res *Response, gotErrAfterRe
                        } else {
                                bodyWriter.cancel()
                                cs.abortRequestBodyWrite(http2errStopReqBodyWriteAndCancel)
+                               <-bodyWriter.resc
                        }
                        cc.forgetStreamID(cs.ID)
                        return nil, cs.getStartedWrite(), http2errTimeout
@@ -7622,6 +7626,7 @@ func (cc *http2ClientConn) roundTrip(req *Request) (res *Response, gotErrAfterRe
                        } else {
                                bodyWriter.cancel()
                                cs.abortRequestBodyWrite(http2errStopReqBodyWriteAndCancel)
+                               <-bodyWriter.resc
                        }
                        cc.forgetStreamID(cs.ID)
                        return nil, cs.getStartedWrite(), ctx.Err()
@@ -7631,6 +7636,7 @@ func (cc *http2ClientConn) roundTrip(req *Request) (res *Response, gotErrAfterRe
                        } else {
                                bodyWriter.cancel()
                                cs.abortRequestBodyWrite(http2errStopReqBodyWriteAndCancel)
+                               <-bodyWriter.resc
                        }
                        cc.forgetStreamID(cs.ID)
                        return nil, cs.getStartedWrite(), http2errRequestCanceled
@@ -7640,6 +7646,7 @@ func (cc *http2ClientConn) roundTrip(req *Request) (res *Response, gotErrAfterRe
                        // forgetStreamID.
                        return nil, cs.getStartedWrite(), cs.resetErr
                case err := <-bodyWriter.resc:
+                       bodyWritten = true
                        // Prefer the read loop's response, if available. Issue 16102.
                        select {
                        case re := <-readLoopResCh:
@@ -7650,7 +7657,6 @@ func (cc *http2ClientConn) roundTrip(req *Request) (res *Response, gotErrAfterRe
                                cc.forgetStreamID(cs.ID)
                                return nil, cs.getStartedWrite(), err
                        }
-                       bodyWritten = true
                        if d := cc.responseHeaderTimeout(); d != 0 {
                                timer := time.NewTimer(d)
                                defer timer.Stop()
@@ -9055,7 +9061,9 @@ func (t *http2Transport) getBodyWriterState(cs *http2clientStream, body io.Reade
 
 func (s http2bodyWriterState) cancel() {
        if s.timer != nil {
-               s.timer.Stop()
+               if s.timer.Stop() {
+                       s.resc <- nil
+               }
        }
 }
 
index 7c6c478b12902718f117b9609f006cc7aff20885..669bd9bbc2434fdef6f3a27d19604633ea3746f0 100644 (file)
@@ -8,7 +8,7 @@ golang.org/x/crypto/curve25519
 golang.org/x/crypto/hkdf
 golang.org/x/crypto/internal/subtle
 golang.org/x/crypto/poly1305
-# golang.org/x/net v0.0.0-20201029202311-70d85028bad3
+# golang.org/x/net v0.0.0-20210129194117-4acb7895a057
 ## explicit
 golang.org/x/net/dns/dnsmessage
 golang.org/x/net/http/httpguts