protocol-v2 doc: put HTTP headers after request
PATCH 1/1 protocol-v2 doc: put HTTP headers after request
HTTP servers return 400 if you send headers before the GET request.
--- Documentation/technical/protocol-v2.txt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)
Documentation/technical/protocol-v2.txt +1 -2
@@ -64,9 +64,8 @@ When using the http:// or https:// transport a client makes a "smart" info/refs request as described in `http-protocol.txt` and requests that v2 be used by supplying "version=2" in the `Git-Protocol` header. - C: Git-Protocol: version=2 - C: C: GET $GIT_URL/info/refs?service=git-upload-pack HTTP/1.0 + C: Git-Protocol: version=2 A v2 server would reply:
Signature · 1 line
2.18.0.rc2.346.g013aa6912e-goog
Quoted 6 lines · Josh Steadmon
HTTP servers return 400 if you send headers before the GET request.
Signed-off-by Josh Steadmon <[email protected]>--- Documentation/technical/protocol-v2.txt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)
Thanks. Congrats on your first patch! ;-)
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.
Quoted 3 lines · Jonathan Nieder
Quoted 1 line · Josh Steadmon
HTTP servers return 400 if you send headers before the GET request.
[...]
Quoted 4 lines
Tested using
openssl
s_client-connect github.com:443
Quoted 8 lines
with input
GET /git/git/info/refs?service=git-upload-pack HTTP/1.0
Host: github.com
Git-Protocol: version=2which 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