From: Andreas Schwab <schwab@linux-m68k.org>
To: Ilari Liusvaara <ilari.liusvaara@elisanet.fi>
Cc: Miles Bader <miles@gnu.org>, git@vger.kernel.org
Subject: [PATCH] smart-http: Don't change POST to GET when following redirect
Date: Sat, 18 Sep 2010 10:47:50 +0200 [thread overview]
Message-ID: <m21v8rcua1.fsf_-_@whitebox.home> (raw)
In-Reply-To: <m262y3cvpy.fsf@whitebox.home> (Andreas Schwab's message of "Sat, 18 Sep 2010 10:16:41 +0200")
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 <schwab@linux-m68k.org>
---
Andreas Schwab <schwab@linux-m68k.org> writes:
> Ilari Liusvaara <ilari.liusvaara@elisanet.fi> 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, schwab@linux-m68k.org
GPG Key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5
"And now for something completely different."
next prev parent reply other threads:[~2010-09-18 8:48 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-09-18 4:33 git "smart http" server vs. http redirects Miles Bader
2010-09-18 7:03 ` Ilari Liusvaara
2010-09-18 8:16 ` Andreas Schwab
2010-09-18 8:47 ` Andreas Schwab [this message]
2010-09-18 14:09 ` [PATCH] smart-http: Don't change POST to GET when following redirect Miles Bader
2010-09-18 21:00 ` Jay Soffian
2010-09-24 6:20 ` [PATCH v2] " Tay Ray Chuan
2010-09-24 18:06 ` Andreas Schwab
2010-09-25 4:20 ` [PATCH v3] " Tay Ray Chuan
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=m21v8rcua1.fsf_-_@whitebox.home \
--to=schwab@linux-m68k.org \
--cc=git@vger.kernel.org \
--cc=ilari.liusvaara@elisanet.fi \
--cc=miles@gnu.org \
/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 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.