All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] protocol-v2 doc: put HTTP headers after request
@ 2018-06-22 19:01 Josh Steadmon
  2018-06-22 19:37 ` Jonathan Nieder
  0 siblings, 1 reply; 3+ messages in thread
From: Josh Steadmon @ 2018-06-22 19:01 UTC (permalink / raw)
  To: git; +Cc: Josh Steadmon

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(-)

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


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH] protocol-v2 doc: put HTTP headers after request
  2018-06-22 19:01 [PATCH] protocol-v2 doc: put HTTP headers after request Josh Steadmon
@ 2018-06-22 19:37 ` Jonathan Nieder
  2018-06-22 20:47   ` Jonathan Nieder
  0 siblings, 1 reply; 3+ messages in thread
From: Jonathan Nieder @ 2018-06-22 19:37 UTC (permalink / raw)
  To: Josh Steadmon; +Cc: git, bmwill

Josh Steadmon wrote:

> 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>

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] protocol-v2 doc: put HTTP headers after request
  2018-06-22 19:37 ` Jonathan Nieder
@ 2018-06-22 20:47   ` Jonathan Nieder
  0 siblings, 0 replies; 3+ messages in thread
From: Jonathan Nieder @ 2018-06-22 20:47 UTC (permalink / raw)
  To: Josh Steadmon; +Cc: git, bmwill

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

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2018-06-22 20:47 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-06-22 19:01 [PATCH] protocol-v2 doc: put HTTP headers after request Josh Steadmon
2018-06-22 19:37 ` Jonathan Nieder
2018-06-22 20:47   ` Jonathan Nieder

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.