summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2012-10-16 11:44:37 -0700
committerJunio C Hamano <gitster@pobox.com>2012-10-16 11:44:37 -0700
commit053a08f5bba3444d40516baf30a5d61e42e4fb93 (patch)
tree669afbf17fee7188525b8d01f7e339d3f7101904
parent9306b5b9a33185e7867202718162d8a38d5627ab (diff)
parent188923f0d1c8148415b3173986cd1e21871c947e (diff)
downloadgit-053a08f5bba3444d40516baf30a5d61e42e4fb93.tar.gz
Merge branch 'jk/maint-http-half-auth-push'
Fixes a regression in maint-1.7.11 (v1.7.11.7), maint (v1.7.12.1) and master (v1.8.0-rc0). * jk/maint-http-half-auth-push: http: fix segfault in handle_curl_result
-rw-r--r--http.c7
-rw-r--r--http.h3
-rw-r--r--remote-curl.c2
3 files changed, 6 insertions, 6 deletions
diff --git a/http.c b/http.c
index 345c171c5f..df9bb71086 100644
--- a/http.c
+++ b/http.c
@@ -745,10 +745,9 @@ char *get_remote_object_url(const char *url, const char *hex,
return strbuf_detach(&buf, NULL);
}
-int handle_curl_result(struct active_request_slot *slot)
+int handle_curl_result(struct active_request_slot *slot,
+ struct slot_results *results)
{
- struct slot_results *results = slot->results;
-
if (results->curl_result == CURLE_OK) {
credential_approve(&http_auth);
return HTTP_OK;
@@ -822,7 +821,7 @@ static int http_request(const char *url, void *result, int target, int options)
if (start_active_slot(slot)) {
run_active_slot(slot);
- ret = handle_curl_result(slot);
+ ret = handle_curl_result(slot, &results);
} else {
error("Unable to start HTTP request for %s", url);
ret = HTTP_START_FAILED;
diff --git a/http.h b/http.h
index 12de25597d..0bd1e849e1 100644
--- a/http.h
+++ b/http.h
@@ -78,7 +78,8 @@ extern int start_active_slot(struct active_request_slot *slot);
extern void run_active_slot(struct active_request_slot *slot);
extern void finish_active_slot(struct active_request_slot *slot);
extern void finish_all_active_slots(void);
-extern int handle_curl_result(struct active_request_slot *slot);
+extern int handle_curl_result(struct active_request_slot *slot,
+ struct slot_results *results);
#ifdef USE_CURL_MULTI
extern void fill_active_slots(void);
diff --git a/remote-curl.c b/remote-curl.c
index 10fa8f1ac5..42716c59cf 100644
--- a/remote-curl.c
+++ b/remote-curl.c
@@ -356,7 +356,7 @@ static int run_slot(struct active_request_slot *slot)
slot->curl_result = curl_easy_perform(slot->curl);
finish_active_slot(slot);
- err = handle_curl_result(slot);
+ err = handle_curl_result(slot, &results);
if (err != HTTP_OK && err != HTTP_REAUTH) {
error("RPC failed; result=%d, HTTP code = %ld",
results.curl_result, results.http_code);