smart-http: Don't change POST to GET when following redirect
authorTay Ray Chuan <rctay89@gmail.com>
Sat, 25 Sep 2010 04:20:35 +0000 (12:20 +0800)
committerJunio C Hamano <gitster@pobox.com>
Mon, 27 Sep 2010 18:38:55 +0000 (11:38 -0700)
commit311e2ea0062bf09d6f78f5458eeb14dbc6c092ea
treeaad14c493b580b807e33e37edcde91c2fb2b3bc8
parent9027fa9eb7df606b6658dd48a40bb993ce222ddd
smart-http: Don't change POST to GET when following redirect

For a long time (29508e1 "Isolate shared HTTP request functionality", Fri
Nov 18 11:02:58 2005), we've followed HTTP redirects with
CURLOPT_FOLLOWLOCATION.

However, 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.

Fix this by telling libcurl to always keep the request as type POST with
CURLOPT_POSTREDIR.

For users of libcurl older than 7.19.1, use CURLOPT_POST301 instead,
which only follows 301s instead of both 301s and 302s.

Signed-off-by: Andreas Schwab <schwab@linux-m68k.org>
Signed-off-by: Tay Ray Chuan <rctay89@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
http.c
t/lib-httpd/apache.conf
t/t5551-http-fetch.sh