From: "Shawn O. Pearce" <spearce@spearce.org>
To: "H. Peter Anvin" <hpa@zytor.com>
Cc: git@vger.kernel.org
Subject: Re: Git-aware HTTP transport
Date: Tue, 26 Aug 2008 09:14:25 -0700 [thread overview]
Message-ID: <20080826161425.GG26523@spearce.org> (raw)
In-Reply-To: <20080826145857.GF26523@spearce.org>
"Shawn O. Pearce" <spearce@spearce.org> wrote:
> "H. Peter Anvin" <hpa@zytor.com> wrote:
> >
> > I actually suggest embedding the forwarding URL into an ordinary
> > payload. Instead of a HEAD request here, then do a GET (or, even
> > better, POST) and get the redirected URL in return.
>
> Hmm. I'm actually thinking the exact opposite here.
Here's the delta from the last draft I emailed. Its basically just
about this redirect stuff.
diff --git a/Documentation/technical/http-protocol.txt b/Documentation/technical/http-protocol.txt
index 99d7623..a3f7379 100644
--- a/Documentation/technical/http-protocol.txt
+++ b/Documentation/technical/http-protocol.txt
@@ -43,14 +43,40 @@ All requests/responses use "application/x-git" as the content type.
Action specific subtypes are specified by the parameter "service",
e.g. "application/x-git; service=upload-pack".
+Redirects
+---------
+
+If a POST request results in an HTTP 302 or 303 redirect response
+clients should retry the request by updating the URL and POSTing
+the request to the new location.
+
+If the new request is successful clients should trim off the
+trailing "/backend.git/$service" portion of the new loaction
+and use the remainder as the base URL for future requests in
+the same transaction.
+
+This redirection permits Apache's mod_rewrite (and many other
+servers) to implement a form of round-robin load balancing by
+redirecting all requests to a generic host to a specific host.
+
Detecting Smart Servers
-----------------------
HTTP clients can detect a smart Git-aware server by sending
a request to service "show-ref".
-A Git-aware server will respond with a valid response (see below).
-A dumb server should respond with an error message.
+A Git-aware server will respond with a valid response. Clients
+must check the following properties to prevent being fooled by
+misconfigured servers:
+
+ * HTTP status code is 200.
+ * Content-Type is "application/x-git; service=show-ref"
+ * The body can be parsed without errors. The length of
+ each pkt-line must be 4 valid hex digits.
+
+A dumb server will respond with a non-200 HTTP status code.
+A misconfigured server may respond with a normal 200 status
+code, but an incorrect content type.
Service show-ref
----------------
--
Shawn.
next prev parent reply other threads:[~2008-08-26 16:16 UTC|newest]
Thread overview: 57+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-08-26 1:26 Git-aware HTTP transport Shawn O. Pearce
2008-08-26 2:34 ` H. Peter Anvin
2008-08-26 3:45 ` Shawn O. Pearce
2008-08-26 3:59 ` david
2008-08-26 4:15 ` H. Peter Anvin
2008-08-26 4:25 ` david
2008-08-26 4:42 ` H. Peter Anvin
2008-08-26 4:45 ` Imran M Yousuf
2008-08-26 17:01 ` Nicolas Pitre
2008-08-26 17:03 ` Shawn O. Pearce
2008-08-26 4:14 ` H. Peter Anvin
2008-08-26 14:58 ` Shawn O. Pearce
2008-08-26 16:14 ` Shawn O. Pearce [this message]
2008-08-26 16:33 ` H. Peter Anvin
2008-08-26 17:26 ` Shawn O. Pearce
2008-08-26 22:38 ` H. Peter Anvin
2008-08-27 2:51 ` Imran M Yousuf
2008-08-28 3:50 ` Shawn O. Pearce
2008-08-28 4:37 ` H. Peter Anvin
2008-08-28 4:42 ` Shawn O. Pearce
2008-08-28 4:58 ` H. Peter Anvin
2008-08-28 6:40 ` Imran M Yousuf
2008-08-28 4:42 ` Junio C Hamano
2008-08-28 14:57 ` Shawn O. Pearce
2008-08-28 17:26 ` david
2008-08-28 17:28 ` Shawn O. Pearce
2008-08-28 17:37 ` david
2008-08-28 17:38 ` Daniel Stenberg
2008-08-28 17:43 ` Shawn O. Pearce
2008-08-28 17:47 ` H. Peter Anvin
2008-08-28 18:04 ` Mike Hommey
2008-08-28 17:43 ` H. Peter Anvin
2008-08-28 18:12 ` david
2008-08-28 18:14 ` H. Peter Anvin
2008-08-28 18:18 ` david
2008-08-29 4:02 ` Junio C Hamano
2008-08-29 5:11 ` H. Peter Anvin
2008-08-29 6:50 ` Junio C Hamano
2008-08-29 17:39 ` Shawn O. Pearce
2008-08-29 19:55 ` Nicolas Pitre
2008-09-01 16:05 ` Tarmigan
2008-09-01 16:13 ` Tarmigan
2008-09-02 6:06 ` Shawn O. Pearce
2008-09-02 6:09 ` H. Peter Anvin
2008-09-02 6:13 ` Shawn O. Pearce
2008-09-02 18:20 ` Tarmigan
2008-08-28 17:05 ` H. Peter Anvin
2008-08-28 17:10 ` Shawn O. Pearce
2008-08-28 17:20 ` H. Peter Anvin
2008-08-28 17:26 ` Shawn O. Pearce
2008-08-28 17:44 ` H. Peter Anvin
2008-08-28 17:46 ` Shawn O. Pearce
2008-08-28 18:40 ` Nicolas Pitre
2008-08-28 18:47 ` H. Peter Anvin
2013-02-13 1:34 ` Git-aware HTTP transport docs H. Peter Anvin
2013-02-13 2:23 ` Scott Chacon
2013-02-13 15:29 ` Junio C Hamano
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20080826161425.GG26523@spearce.org \
--to=spearce@spearce.org \
--cc=git@vger.kernel.org \
--cc=hpa@zytor.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).