@matheusbsbs / matheus-bagliano / commits / d21f9794ce
Fork 0

Disable CURLOPT_NOBODY before enabling CURLOPT_PUT and CURLOPT_POST

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> Signed-off-by: Tay Ray Chuan <rctay89@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Martin Storsjö committed Nov 23, 2009 at 11:03 UTC d21f9794ceff7d89fd2fc44a3e5ff106d5dbd141
2 files changed +2 -2
http-push.c
+1 -1
@@ -408,10 +408,10 @@ static void start_put(struct transfer_request *request)
408 curl_easy_setopt(slot->curl, CURLOPT_IOCTLDATA, &request->buffer);
409 #endif
410 curl_easy_setopt(slot->curl, CURLOPT_WRITEFUNCTION, fwrite_null);
411 + curl_easy_setopt(slot->curl, CURLOPT_NOBODY, 0);
412 curl_easy_setopt(slot->curl, CURLOPT_CUSTOMREQUEST, DAV_PUT);
413 curl_easy_setopt(slot->curl, CURLOPT_UPLOAD, 1);
414 curl_easy_setopt(slot->curl, CURLOPT_PUT, 1);
414 - curl_easy_setopt(slot->curl, CURLOPT_NOBODY, 0);
415 curl_easy_setopt(slot->curl, CURLOPT_URL, request->url);
416
417 if (start_active_slot(slot)) {
remote-curl.c
+1 -1
@@ -356,8 +356,8 @@ static int post_rpc(struct rpc_state *rpc)
356 slot = get_active_slot();
357 slot->results = &results;
358
359 - curl_easy_setopt(slot->curl, CURLOPT_POST, 1);
359 curl_easy_setopt(slot->curl, CURLOPT_NOBODY, 0);
360 + curl_easy_setopt(slot->curl, CURLOPT_POST, 1);
361 curl_easy_setopt(slot->curl, CURLOPT_URL, rpc->service_url);
362 curl_easy_setopt(slot->curl, CURLOPT_ENCODING, "");
363