Jonathan Nieder wrote: > Josh Steadmon wrote: >> HTTP servers return 400 if you send headers before the GET request. [...] > Tested using > > openssl s_client -connect github.com:443 > > with input > > GET /git/git/info/refs?service=git-upload-pack HTTP/1.0 > Host: github.com > Git-Protocol: version=2 > > which produces a 404 instead of the 400 that putting Git-Protocol > in front would produce. I figured out how to produce a 200: printf '%s\r\n' \ 'GET /git/git/info/refs?service=git-upload-pack HTTP/1.0' \ 'Host: github.com' \ 'User-Agent: git/jrn-at-keyboard' \ 'Git-Protocol: version=2' '' | openssl s_client -connect github.com:443 -quiet The critical part is the User-Agent starting with git/. So we should probably update Documentation/technical/http-protocol.txt to indicate that clients MUST have a user-agent string starting with Git/ to allow the kind of request routing that github does. That's all orthogonal to this patch. The patch still looks good to me. Sincerely, Jonathan