diff options
author | CoprDistGit <infra@openeuler.org> | 2024-09-12 04:23:51 +0000 |
---|---|---|
committer | CoprDistGit <infra@openeuler.org> | 2024-09-12 04:23:51 +0000 |
commit | 86d143317839566c602c276fafb1a30ad469941e (patch) | |
tree | 4e895b6b563710cbc2cce86ead21f0a8d58cdcd3 /backport-0013-release-branch.go1.21-net-http-update-bundled-golang.patch | |
parent | 2784bd2c52574b27d271d643816d481d9e4dfc8c (diff) |
automatic import of golang
Diffstat (limited to 'backport-0013-release-branch.go1.21-net-http-update-bundled-golang.patch')
-rw-r--r-- | backport-0013-release-branch.go1.21-net-http-update-bundled-golang.patch | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/backport-0013-release-branch.go1.21-net-http-update-bundled-golang.patch b/backport-0013-release-branch.go1.21-net-http-update-bundled-golang.patch new file mode 100644 index 0000000..e6db274 --- /dev/null +++ b/backport-0013-release-branch.go1.21-net-http-update-bundled-golang.patch @@ -0,0 +1,98 @@ +From 0574d64ad35b51eb770d6cb59b46c9b3d8540999 Mon Sep 17 00:00:00 2001 +From: Dmitri Shuralyov <dmitshur@golang.org> +Date: Fri, 12 Apr 2024 15:46:59 -0400 +Subject: [PATCH] [release-branch.go1.21] net/http: update bundled + golang.org/x/net/http2 + +Reference:https://go-review.googlesource.com/c/go/+/578357 +Conflict:NA +Pull in CL 578336: + + ef58d90f http2: send correct LastStreamID in stream-caused GOAWAY + +For #66668. +Fixes #66697. + +Change-Id: I91fc8a67f21fadcb1801ff29d5e2b0453db89617 +Reviewed-on: https://go-review.googlesource.com/c/go/+/578357 +Reviewed-by: Carlos Amedee <carlos@golang.org> +Reviewed-by: Dmitri Shuralyov <dmitshur@google.com> +LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> +--- + src/net/http/h2_bundle.go | 22 +++++++++++++++------- + 1 file changed, 15 insertions(+), 7 deletions(-) + +diff --git a/src/net/http/h2_bundle.go b/src/net/http/h2_bundle.go +index cd95f84269..5ad0c2819b 100644 +--- a/src/net/http/h2_bundle.go ++++ b/src/net/http/h2_bundle.go +@@ -1891,6 +1891,9 @@ func http2terminalReadFrameError(err error) bool { + // returned error is ErrFrameTooLarge. Other errors may be of type + // ConnectionError, StreamError, or anything else from the underlying + // reader. ++// ++// If ReadFrame returns an error and a non-nil Frame, the Frame's StreamID ++// indicates the stream responsible for the error. + func (fr *http2Framer) ReadFrame() (http2Frame, error) { + fr.errDetail = nil + if fr.lastFrame != nil { +@@ -2923,7 +2926,7 @@ func (fr *http2Framer) maxHeaderStringLen() int { + // readMetaFrame returns 0 or more CONTINUATION frames from fr and + // merge them into the provided hf and returns a MetaHeadersFrame + // with the decoded hpack values. +-func (fr *http2Framer) readMetaFrame(hf *http2HeadersFrame) (*http2MetaHeadersFrame, error) { ++func (fr *http2Framer) readMetaFrame(hf *http2HeadersFrame) (http2Frame, error) { + if fr.AllowIllegalReads { + return nil, errors.New("illegal use of AllowIllegalReads with ReadMetaHeaders") + } +@@ -2993,8 +2996,8 @@ func (fr *http2Framer) readMetaFrame(hf *http2HeadersFrame) (*http2MetaHeadersFr + log.Printf("http2: header list too large") + } + // It would be nice to send a RST_STREAM before sending the GOAWAY, +- // but the struture of the server's frame writer makes this difficult. +- return nil, http2ConnectionError(http2ErrCodeProtocol) ++ // but the structure of the server's frame writer makes this difficult. ++ return mh, http2ConnectionError(http2ErrCodeProtocol) + } + + // Also close the connection after any CONTINUATION frame following an +@@ -3005,12 +3008,12 @@ func (fr *http2Framer) readMetaFrame(hf *http2HeadersFrame) (*http2MetaHeadersFr + log.Printf("http2: invalid header: %v", invalid) + } + // It would be nice to send a RST_STREAM before sending the GOAWAY, +- // but the struture of the server's frame writer makes this difficult. +- return nil, http2ConnectionError(http2ErrCodeProtocol) ++ // but the structure of the server's frame writer makes this difficult. ++ return mh, http2ConnectionError(http2ErrCodeProtocol) + } + + if _, err := hdec.Write(frag); err != nil { +- return nil, http2ConnectionError(http2ErrCodeCompression) ++ return mh, http2ConnectionError(http2ErrCodeCompression) + } + + if hc.HeadersEnded() { +@@ -3027,7 +3030,7 @@ func (fr *http2Framer) readMetaFrame(hf *http2HeadersFrame) (*http2MetaHeadersFr + mh.http2HeadersFrame.invalidate() + + if err := hdec.Close(); err != nil { +- return nil, http2ConnectionError(http2ErrCodeCompression) ++ return mh, http2ConnectionError(http2ErrCodeCompression) + } + if invalid != nil { + fr.errDetail = invalid +@@ -5337,6 +5340,11 @@ func (sc *http2serverConn) processFrameFromReader(res http2readFrameResult) bool + sc.goAway(http2ErrCodeFlowControl) + return true + case http2ConnectionError: ++ if res.f != nil { ++ if id := res.f.Header().StreamID; id > sc.maxClientStreamID { ++ sc.maxClientStreamID = id ++ } ++ } + sc.logf("http2: server connection error from %v: %v", sc.conn.RemoteAddr(), ev) + sc.goAway(http2ErrCode(ev)) + return true // goAway will handle shutdown +-- +2.33.0 + |