diff options
author | Jeff King <peff@peff.net> | 2013-10-31 02:36:26 -0400 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2013-10-31 10:05:59 -0700 |
commit | 3a347ed70727cdcb447040705b4128304c0244e3 (patch) | |
tree | f0406a4d2dd21b8d18b6adb49c1f221e59acca7a /remote-curl.c | |
parent | 0972ccd97cc8f913ea828a1e03ef3652fc1ff514 (diff) | |
download | git-3a347ed70727cdcb447040705b4128304c0244e3.tar.gz |
remote-curl: pass curl slot_results back through run_slot
Some callers may want to know more than just the integer
error code we return. Let them optionally pass a
slot_results struct to fill in (or NULL if they do not
care). In either case we continue to return the integer
code.
We can also give probe_rpc the same treatment (since it
builds directly on run_slot).
Signed-off-by: Jeff King <peff@peff.net>
Diffstat (limited to 'remote-curl.c')
-rw-r--r-- | remote-curl.c | 22 |
1 files changed, 13 insertions, 9 deletions
diff --git a/remote-curl.c b/remote-curl.c index 5b3ce9eed2..9ad347159e 100644 --- a/remote-curl.c +++ b/remote-curl.c @@ -364,25 +364,29 @@ static size_t rpc_in(char *ptr, size_t eltsize, return size; } -static int run_slot(struct active_request_slot *slot) +static int run_slot(struct active_request_slot *slot, + struct slot_results *results) { int err; - struct slot_results results; + struct slot_results results_buf; - slot->results = &results; + if (!results) + results = &results_buf; + + slot->results = results; slot->curl_result = curl_easy_perform(slot->curl); finish_active_slot(slot); - err = handle_curl_result(&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); + results->curl_result, results->http_code); } return err; } -static int probe_rpc(struct rpc_state *rpc) +static int probe_rpc(struct rpc_state *rpc, struct slot_results *results) { struct active_request_slot *slot; struct curl_slist *headers = NULL; @@ -404,7 +408,7 @@ static int probe_rpc(struct rpc_state *rpc) curl_easy_setopt(slot->curl, CURLOPT_WRITEFUNCTION, fwrite_buffer); curl_easy_setopt(slot->curl, CURLOPT_FILE, &buf); - err = run_slot(slot); + err = run_slot(slot, results); curl_slist_free_all(headers); strbuf_release(&buf); @@ -443,7 +447,7 @@ static int post_rpc(struct rpc_state *rpc) if (large_request) { do { - err = probe_rpc(rpc); + err = probe_rpc(rpc, NULL); } while (err == HTTP_REAUTH); if (err != HTTP_OK) return -1; @@ -542,7 +546,7 @@ retry: curl_easy_setopt(slot->curl, CURLOPT_WRITEFUNCTION, rpc_in); curl_easy_setopt(slot->curl, CURLOPT_FILE, rpc); - err = run_slot(slot); + err = run_slot(slot, NULL); if (err == HTTP_REAUTH && !large_request) goto retry; if (err != HTTP_OK) |