This works around a bug in curl versions up to 7.19.4, where disabling the CURLOPT_NOBODY option sets the internal state incorrectly considering that CURLOPT_PUT was enabled earlier.
The bug is discussed at http://curl.haxx.se/bug/view.cgi?id=2727981 and is corrected in the latest version of curl in CVS.
This bug usually has no impact on git, but may surface if using multi-pass authentication methods.
Signed-off-by: Martin Storsjo <martin@martin.st> --- http-push.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)
Show changes to http-push.c +1 −1
diff --git a/http-push.c b/http-push.c index 5138224..3629492 100644 --- a/http-push.c +++ b/http-push.c @@ -599,9 +599,9 @@ static void start_put(struct transfer_request *request) #endif curl_easy_setopt(slot->curl, CURLOPT_WRITEFUNCTION, fwrite_null); curl_easy_setopt(slot->curl, CURLOPT_CUSTOMREQUEST, DAV_PUT); + curl_easy_setopt(slot->curl, CURLOPT_NOBODY, 0); curl_easy_setopt(slot->curl, CURLOPT_UPLOAD, 1); curl_easy_setopt(slot->curl, CURLOPT_PUT, 1); - curl_easy_setopt(slot->curl, CURLOPT_NOBODY, 0); curl_easy_setopt(slot->curl, CURLOPT_URL, request->url); if (start_active_slot(slot)) {
-- 1.6.0.2