Skip to content

Disable extended CONNECT by default - #6

Open
pagpeter wants to merge 1 commit into
masterfrom
http2-disable-extended-connect-by-default
Open

pagpeter wants to merge 1 commit into
masterfrom
http2-disable-extended-connect-by-default

Conversation

@pagpeter

Copy link
Copy Markdown
Owner

When the http2 server advertises SETTINGS_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 GODEBUG contains http2xconnect=1. Also ports the check from 9a518991 (CL 610977) that bogdanfinn#12 left out: while off, requests with :protocol get a PROTOCOL_ERROR reset. Only the server changes; the client's SETTINGS still come from the profile, and h2_bundle.go never advertised it. Servers that rely on extended CONNECT need GODEBUG=http2xconnect=1.

TestServerExtendedConnect starts a process for no GODEBUG, http2xconnect=0 and http2xconnect=1, and checks what each advertises and whether it accepts a :protocol request. It fails without either change. go test ./... passes.

🤖 Generated with Claude Code

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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant