Ok, neat. Until all Git clients are upgraded, I modified the instructions to refer to http://git.savannah... instead of http://git.sv.
- Sylvain On Sat, Sep 18, 2010 at 06:18:53PM +0900, Miles Bader wrote: > I should have just CC'd savannah-users on my message to the git list, > but anyway... > > -miles > > ---------- Forwarded message ---------- > From: Andreas Schwab <[email protected]> > Date: Sat, Sep 18, 2010 at 5:47 PM > Subject: [PATCH] smart-http: Don't change POST to GET when following redirect > To: Ilari Liusvaara <[email protected]> > Cc: Miles Bader <[email protected]>, [email protected] > > > When the remote HTTP server returns a redirect the default libcurl action > is to change a POST request into a GET request while following the > redirect, but the remote http backend does not expect that. Tell libcurl > to always keep the POST request. > > Signed-off-by: Andreas Schwab <[email protected]> > --- > Andreas Schwab <[email protected]> writes: > > > Ilari Liusvaara <[email protected]> writes: > > > >> On Sat, Sep 18, 2010 at 01:33:48PM +0900, Miles Bader wrote: > >> > >>> The savannah.gnu.org admins are trying out the git "smart http" server, > >>> but it doesn't seem to handle http redirects properly... should it? > >>> Is this a bug with the git server? > >>> > >>> The follow is from Sylvain Beucler; > >>> > Hmmm, actually it works, but it doesn't support a HTTP redirect > >>> > (namely git.sv.gnu.org -> git.savannah.gnu.org). > >>> > > >>> > $ git clone http://git.sv.gnu.org/r/freedink.git > >>> > Initialized empty Git repository in /tmp/freedink/.git/ > >>> > error: RPC failed; result=22, HTTP code = 405 > >> > >> 405 (Method not allowed)? Can you see what request it is trying to send > >> and to where (the request that fails with 405 that is)? > > > > I think this is a bug in the apache setup at savannnah. It is > > responding to POST .../git-upload-pack with both 301 and 405. This does > > not happen if you use the redirected address directly. > > Looking closer, this is actually a bug in git. It does not set the > POSTREDIR option, so that libcurl changes the POST into GET when > following a redirection. > > Andreas. > > --- > remote-curl.c | 1 + > 1 files changed, 1 insertions(+), 0 deletions(-) > > diff --git a/remote-curl.c b/remote-curl.c > index 04d4813..309b024 100644 > --- a/remote-curl.c > +++ b/remote-curl.c > @@ -393,6 +393,7 @@ static int post_rpc(struct rpc_state *rpc) > curl_easy_setopt(slot->curl, CURLOPT_POST, 1); > curl_easy_setopt(slot->curl, CURLOPT_URL, rpc->service_url); > curl_easy_setopt(slot->curl, CURLOPT_ENCODING, ""); > + curl_easy_setopt(slot->curl, CURLOPT_POSTREDIR, CURL_REDIR_POST_ALL); > > headers = curl_slist_append(headers, rpc->hdr_content_type); > headers = curl_slist_append(headers, rpc->hdr_accept); > -- > 1.7.2.3 > > > -- > Andreas Schwab, [email protected] > GPG Key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5 > "And now for something completely different." > > > > -- > Cat is power. Cat is peace.
