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