Skip to content

Commit eb1ae59

Browse files
Merge branch 'golang:master' into master
2 parents 037869d + daac0ce commit eb1ae59

17 files changed

+275
-190
lines changed

Diff for: go.mod

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ module golang.org/x/net
33
go 1.17
44

55
require (
6-
golang.org/x/sys v0.7.0
7-
golang.org/x/term v0.7.0
6+
golang.org/x/sys v0.8.0
7+
golang.org/x/term v0.8.0
88
golang.org/x/text v0.9.0
99
)

Diff for: go.sum

+4-4
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,13 @@ golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBc
1616
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
1717
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
1818
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
19-
golang.org/x/sys v0.7.0 h1:3jlCCIQZPdOYu1h8BkNvLz8Kgwtae2cagcG/VamtZRU=
20-
golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
19+
golang.org/x/sys v0.8.0 h1:EBmGv8NaZBZTWvrbjNoL6HVt+IVy3QDQpJs7VRIw3tU=
20+
golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
2121
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
2222
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
2323
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
24-
golang.org/x/term v0.7.0 h1:BEvjmm5fURWqcfbSKTdpkDXYBrUS1c0m8agp14W48vQ=
25-
golang.org/x/term v0.7.0/go.mod h1:P32HKFT3hSsZrRxla30E9HqToFYAQPCMs/zFMBUFqPY=
24+
golang.org/x/term v0.8.0 h1:n5xxQn2i3PC0yLAbjTpNT85q/Kgzcr2gIoX9OrJUols=
25+
golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo=
2626
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
2727
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
2828
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=

Diff for: http2/transport.go

+24-6
Original file line numberDiff line numberDiff line change
@@ -1266,6 +1266,27 @@ func (cc *ClientConn) RoundTrip(req *http.Request) (*http.Response, error) {
12661266
return res, nil
12671267
}
12681268

1269+
cancelRequest := func(cs *clientStream, err error) error {
1270+
cs.cc.mu.Lock()
1271+
defer cs.cc.mu.Unlock()
1272+
cs.abortStreamLocked(err)
1273+
if cs.ID != 0 {
1274+
// This request may have failed because of a problem with the connection,
1275+
// or for some unrelated reason. (For example, the user might have canceled
1276+
// the request without waiting for a response.) Mark the connection as
1277+
// not reusable, since trying to reuse a dead connection is worse than
1278+
// unnecessarily creating a new one.
1279+
//
1280+
// If cs.ID is 0, then the request was never allocated a stream ID and
1281+
// whatever went wrong was unrelated to the connection. We might have
1282+
// timed out waiting for a stream slot when StrictMaxConcurrentStreams
1283+
// is set, for example, in which case retrying on a different connection
1284+
// will not help.
1285+
cs.cc.doNotReuse = true
1286+
}
1287+
return err
1288+
}
1289+
12691290
for {
12701291
select {
12711292
case <-cs.respHeaderRecv:
@@ -1280,15 +1301,12 @@ func (cc *ClientConn) RoundTrip(req *http.Request) (*http.Response, error) {
12801301
return handleResponseHeaders()
12811302
default:
12821303
waitDone()
1283-
return nil, cs.abortErr
1304+
return nil, cancelRequest(cs, cs.abortErr)
12841305
}
12851306
case <-ctx.Done():
1286-
err := ctx.Err()
1287-
cs.abortStream(err)
1288-
return nil, err
1307+
return nil, cancelRequest(cs, ctx.Err())
12891308
case <-cs.reqCancel:
1290-
cs.abortStream(errRequestCanceled)
1291-
return nil, errRequestCanceled
1309+
return nil, cancelRequest(cs, errRequestCanceled)
12921310
}
12931311
}
12941312
}

0 commit comments

Comments
 (0)