diff options
author | Jeff King <peff@peff.net> | 2012-10-29 04:13:09 -0400 |
---|---|---|
committer | Jeff King <peff@peff.net> | 2012-10-29 04:13:09 -0400 |
commit | 58f3f9893dc287bd5b7ec4bbd3fc56b77e126e6c (patch) | |
tree | 61abd02b0c8582a9266fd087d5e99aac6bc2b4ab /remote-curl.c | |
parent | d2f4469b13dcd5c850058fdee4b039f07bb33142 (diff) | |
parent | 1960897ebc5a899a8e4ec3c2afc1d2325574fe41 (diff) | |
download | git-58f3f9893dc287bd5b7ec4bbd3fc56b77e126e6c.tar.gz |
Merge branch 'jk/maint-http-init-not-in-result-handler'
Further clean-up to the http codepath that picks up results after
cURL library is done with one request slot.
* jk/maint-http-init-not-in-result-handler:
http: do not set up curl auth after a 401
remote-curl: do not call run_slot repeatedly
Diffstat (limited to 'remote-curl.c')
-rw-r--r-- | remote-curl.c | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/remote-curl.c b/remote-curl.c index 42716c59cf..278fecdd9b 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, &results); + err = handle_curl_result(&results); if (err != HTTP_OK && err != HTTP_REAUTH) { error("RPC failed; result=%d, HTTP code = %ld", results.curl_result, results.http_code); @@ -431,6 +431,11 @@ static int post_rpc(struct rpc_state *rpc) return -1; } + headers = curl_slist_append(headers, rpc->hdr_content_type); + headers = curl_slist_append(headers, rpc->hdr_accept); + headers = curl_slist_append(headers, "Expect:"); + +retry: slot = get_active_slot(); curl_easy_setopt(slot->curl, CURLOPT_NOBODY, 0); @@ -438,10 +443,6 @@ static int post_rpc(struct rpc_state *rpc) curl_easy_setopt(slot->curl, CURLOPT_URL, rpc->service_url); curl_easy_setopt(slot->curl, CURLOPT_ENCODING, "gzip"); - headers = curl_slist_append(headers, rpc->hdr_content_type); - headers = curl_slist_append(headers, rpc->hdr_accept); - headers = curl_slist_append(headers, "Expect:"); - if (large_request) { /* The request body is large and the size cannot be predicted. * We must use chunked encoding to send it. @@ -515,9 +516,9 @@ static int post_rpc(struct rpc_state *rpc) curl_easy_setopt(slot->curl, CURLOPT_WRITEFUNCTION, rpc_in); curl_easy_setopt(slot->curl, CURLOPT_FILE, rpc); - do { - err = run_slot(slot); - } while (err == HTTP_REAUTH && !large_request && !use_gzip); + err = run_slot(slot); + if (err == HTTP_REAUTH && !large_request && !use_gzip) + goto retry; if (err != HTTP_OK) err = -1; |