-
Notifications
You must be signed in to change notification settings - Fork 1.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
http2: improve error when server sends HTTP/1 #224
http2: improve error when server sends HTTP/1 #224
Conversation
If for some reason the server sends an HTTP/1.1 response response starting with "HTTP/1.1 " (9 bytes), http2 transport interprets that as a valid frame header for an expected payload of ~4MB, and fails with non-descriptive messages like "unexpected EOF". This could happen, for example, if ALPN is misconfigured on the server's load balancer. This change attempts to improve that feedback by noting in the error messages whenever the frame header was exactly the "HTTP/1.1 bytes". Signed-off-by: Oleg Zaytsev <[email protected]>
This PR (HEAD: 3d58e97) has been imported to Gerrit for code review. Please visit Gerrit at https://go-review.googlesource.com/c/net/+/623155. Important tips:
|
Message from Gopher Robot: Patch Set 1: (1 comment) Please don’t reply on this GitHub thread. Visit golang.org/cl/623155. |
Message from Oleg Zaytsev: Patch Set 1: (2 comments) Please don’t reply on this GitHub thread. Visit golang.org/cl/623155. |
Message from Damien Neil: Patch Set 3: (1 comment) Please don’t reply on this GitHub thread. Visit golang.org/cl/623155. |
Message from Damien Neil: Patch Set 3: (1 comment) Please don’t reply on this GitHub thread. Visit golang.org/cl/623155. |
Message from Oleg Zaytsev: Patch Set 3: (2 comments) Please don’t reply on this GitHub thread. Visit golang.org/cl/623155. |
This saves some initialization time. Signed-off-by: Oleg Zaytsev <[email protected]>
This PR (HEAD: 4abf41d) has been imported to Gerrit for code review. Please visit Gerrit at https://go-review.googlesource.com/c/net/+/623155. Important tips:
|
Message from Oleg Zaytsev: Patch Set 3: (2 comments) Please don’t reply on this GitHub thread. Visit golang.org/cl/623155. |
Message from Oleg Zaytsev: Patch Set 3: (1 comment) Please don’t reply on this GitHub thread. Visit golang.org/cl/623155. |
Message from Damien Neil: Patch Set 4: Code-Review+2 (1 comment) Please don’t reply on this GitHub thread. Visit golang.org/cl/623155. |
Message from Sean Liao: Patch Set 4: Commit-Queue+1 Please don’t reply on this GitHub thread. Visit golang.org/cl/623155. |
Message from Go LUCI: Patch Set 4: Dry run: CV is trying the patch. Bot data: {"action":"start","triggered_at":"2025-03-09T00:10:14Z","revision":"71a0dee6e2e1000f7b04617955fb25ba0fe30788"} Please don’t reply on this GitHub thread. Visit golang.org/cl/623155. |
Message from Sean Liao: Patch Set 4: -Commit-Queue Please don’t reply on this GitHub thread. Visit golang.org/cl/623155. |
Message from Go LUCI: Patch Set 4: This CL has failed the run. Reason: Tryjob golang/try/x_net-go1.23-linux-386 has failed with summary (view all results):
Build or test failure, click here for results. To reproduce, try Additional links for debugging: Please don’t reply on this GitHub thread. Visit golang.org/cl/623155. |
Message from Go LUCI: Patch Set 4: LUCI-TryBot-Result-1 Please don’t reply on this GitHub thread. Visit golang.org/cl/623155. |
Message from Sean Liao: Patch Set 4: (1 comment) Please don’t reply on this GitHub thread. Visit golang.org/cl/623155. |
`invalidHTTP1LookingFrameHeader` is a function, so it has to be called. Signed-off-by: Oleg Zaytsev <[email protected]>
This PR (HEAD: d6e410d) has been imported to Gerrit for code review. Please visit Gerrit at https://go-review.googlesource.com/c/net/+/623155. Important tips:
|
Message from Oleg Zaytsev: Patch Set 4: (1 comment) Please don’t reply on this GitHub thread. Visit golang.org/cl/623155. |
Message from Sean Liao: Patch Set 5: Commit-Queue+1 Please don’t reply on this GitHub thread. Visit golang.org/cl/623155. |
Message from Go LUCI: Patch Set 5: Dry run: CV is trying the patch. Bot data: {"action":"start","triggered_at":"2025-03-10T10:45:01Z","revision":"2bf23256f8d0cc8258c03ff5c2a8913dd81605a6"} Please don’t reply on this GitHub thread. Visit golang.org/cl/623155. |
Message from Sean Liao: Patch Set 5: -Commit-Queue Please don’t reply on this GitHub thread. Visit golang.org/cl/623155. |
Message from Go LUCI: Patch Set 5: This CL has passed the run Please don’t reply on this GitHub thread. Visit golang.org/cl/623155. |
Message from Go LUCI: Patch Set 5: LUCI-TryBot-Result+1 Please don’t reply on this GitHub thread. Visit golang.org/cl/623155. |
Message from Sean Liao: Patch Set 5: Auto-Submit+1 Code-Review+1 Please don’t reply on this GitHub thread. Visit golang.org/cl/623155. |
Message from Damien Neil: Patch Set 5: Code-Review+2 Please don’t reply on this GitHub thread. Visit golang.org/cl/623155. |
If for some reason the server sends an HTTP/1.1 response starting with "HTTP/1.1 " (9 bytes), http2 transport interprets that as a valid frame header for an expected payload of ~4MB, and fails with non-descriptive messages like "unexpected EOF". This could happen, for example, if ALPN is misconfigured on the server's load balancer. This change attempts to improve that feedback by noting in the error messages whenever the frame header was exactly the "HTTP/1.1 " bytes. Change-Id: I7bf9ed2ee7f299b939b9004386f5bfa30a4e9032 GitHub-Last-Rev: d6e410d GitHub-Pull-Request: #224 Reviewed-on: https://go-review.googlesource.com/c/net/+/623155 LUCI-TryBot-Result: Go LUCI <[email protected]> Reviewed-by: David Chase <[email protected]> Auto-Submit: Sean Liao <[email protected]> Reviewed-by: Damien Neil <[email protected]> Reviewed-by: Sean Liao <[email protected]>
This PR is being closed because golang.org/cl/623155 has been merged. |
If for some reason the server sends an HTTP/1.1 response
starting with "HTTP/1.1 " (9 bytes), http2 transport interprets that as
a valid frame header for an expected payload of ~4MB, and fails with
non-descriptive messages like "unexpected EOF".
This could happen, for example, if ALPN is misconfigured on the server's
load balancer.
This change attempts to improve that feedback by noting in the error
messages whenever the frame header was exactly the "HTTP/1.1 " bytes.