threads / patch / 48765

patchprotocol-v2 doc: put HTTP headers after request

Subject: [PATCH] protocol-v2 doc: put HTTP headers after request

## tl;dr

3 messages between Jun 22, 2018 and Jun 22, 2018. Diffs are folded; open one to read it.

replies: 2people: 2as markdown or json

Josh Steadmon· Jun 22, 2018, 19:01 UTC · lore
HTTP servers return 400 if you send headers before the GET request.
Signed-off-by: Josh Steadmon <steadmon@google.com>
---
 Documentation/technical/protocol-v2.txt | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)
Show changes to Documentation/technical/protocol-v2.txt +1 −2
diff --git a/Documentation/technical/protocol-v2.txt b/Documentation/technical/protocol-v2.txt
index 49bda76d2..f58f24b1e 100644
--- a/Documentation/technical/protocol-v2.txt
+++ b/Documentation/technical/protocol-v2.txt
@@ -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:
 
-- 
2.18.0.rc2.346.g013aa6912e-goog
Jonathan Nieder· Jun 22, 2018, 19:37 UTC · re: Josh Steadmon · lore

Re: [PATCH] protocol-v2 doc: put HTTP headers after request

Josh Steadmon wrote:
Show 6 quoted lines
> HTTP servers return 400 if you send headers before the GET request.
>
> Signed-off-by: Josh Steadmon <steadmon@google.com>
> ---
>  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.

Reviewed-by: Jonathan Nieder <jrnieder@gmail.com>
Jonathan Nieder· Jun 22, 2018, 20:47 UTC · re: Jonathan Nieder · lore

Re: [PATCH] protocol-v2 doc: put HTTP headers after request

Jonathan Nieder wrote:
> Josh Steadmon wrote:
>> HTTP servers return 400 if you send headers before the GET request.
[...]
Show 12 quoted lines
> 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

← back to recent threads