Repository navigation
Conversation
Browsers take a server advertising extended CONNECT as support for WebSockets over HTTP/2, which fails when the server's WebSocket handling does not support it. Go disabled it by default for this reason. Port golang.org/x/net/http2 0a5dcdd8 (CL 641475, golang/go#71128): extended CONNECT is off unless GODEBUG contains http2xconnect=1. Also port the check from 9a518991 (CL 610977) that a535bcd left out: while it is off, the server rejects requests that use :protocol. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
When the
http2server advertisesSETTINGS_ENABLE_CONNECT_PROTOCOL, browsers try WebSockets over HTTP/2, which handlers written for HTTP/1 WebSockets cannot serve. Go turned extended CONNECT off by default for this reason.Port of golang.org/x/net/http2 0a5dcdd8 (CL 641475, golang/go#71128): off unless
GODEBUGcontainshttp2xconnect=1. Also ports the check from 9a518991 (CL 610977) that bogdanfinn#12 left out: while off, requests with:protocolget a PROTOCOL_ERROR reset. Only the server changes; the client's SETTINGS still come from the profile, andh2_bundle.gonever advertised it. Servers that rely on extended CONNECT needGODEBUG=http2xconnect=1.TestServerExtendedConnectstarts a process for noGODEBUG,http2xconnect=0andhttp2xconnect=1, and checks what each advertises and whether it accepts a:protocolrequest. It fails without either change.go test ./...passes.🤖 Generated with Claude Code