savannah-users
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Savannah-users] Fwd: [PATCH] smart-http: Don't change POST to GET w


From: Sylvain Beucler
Subject: Re: [Savannah-users] Fwd: [PATCH] smart-http: Don't change POST to GET when following redirect
Date: Sat, 18 Sep 2010 19:11:14 +0200
User-agent: Mutt/1.5.20 (2009-06-14)

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 <address@hidden>
> 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 <address@hidden>
> Cc: Miles Bader <address@hidden>, address@hidden
> 
> 
> 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 <address@hidden>
> ---
> Andreas Schwab <address@hidden> writes:
> 
> > Ilari Liusvaara <address@hidden> 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, address@hidden
> 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.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]