diff options
author | Junio C Hamano <gitster@pobox.com> | 2012-09-12 14:08:05 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2012-09-12 14:08:05 -0700 |
commit | 3503e9ab32c7a478d0d985171c50a901a2695162 (patch) | |
tree | 3fdddd11cc1cfe64e0d69c0ebcc92eac8dc77ced /http.c | |
parent | cbd6b089e821a4ff35970531b26e64a2e621ff04 (diff) | |
parent | 1403db49b80630cf8c36ba3e8b0f085ea0ab8286 (diff) | |
download | git-3503e9ab32c7a478d0d985171c50a901a2695162.tar.gz |
Merge branch 'maint-1.7.11' into maint
Diffstat (limited to 'http.c')
-rw-r--r-- | http.c | 55 |
1 files changed, 30 insertions, 25 deletions
@@ -745,6 +745,35 @@ 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) +{ + struct slot_results *results = slot->results; + + if (results->curl_result == CURLE_OK) { + credential_approve(&http_auth); + return HTTP_OK; + } else if (missing_target(results)) + return HTTP_MISSING_TARGET; + else if (results->http_code == 401) { + if (http_auth.username && http_auth.password) { + credential_reject(&http_auth); + return HTTP_NOAUTH; + } else { + credential_fill(&http_auth); + init_curl_http_auth(slot->curl); + return HTTP_REAUTH; + } + } else { +#if LIBCURL_VERSION_NUM >= 0x070c00 + if (!curl_errorstr[0]) + strlcpy(curl_errorstr, + curl_easy_strerror(results->curl_result), + sizeof(curl_errorstr)); +#endif + return HTTP_ERROR; + } +} + /* http_request() targets */ #define HTTP_REQUEST_STRBUF 0 #define HTTP_REQUEST_FILE 1 @@ -792,28 +821,7 @@ static int http_request(const char *url, void *result, int target, int options) if (start_active_slot(slot)) { run_active_slot(slot); - if (results.curl_result == CURLE_OK) - ret = HTTP_OK; - else if (missing_target(&results)) - ret = HTTP_MISSING_TARGET; - else if (results.http_code == 401) { - if (http_auth.username && http_auth.password) { - credential_reject(&http_auth); - ret = HTTP_NOAUTH; - } else { - credential_fill(&http_auth); - init_curl_http_auth(slot->curl); - ret = HTTP_REAUTH; - } - } else { -#if LIBCURL_VERSION_NUM >= 0x070c00 - if (!curl_errorstr[0]) - strlcpy(curl_errorstr, - curl_easy_strerror(results.curl_result), - sizeof(curl_errorstr)); -#endif - ret = HTTP_ERROR; - } + ret = handle_curl_result(slot); } else { error("Unable to start HTTP request for %s", url); ret = HTTP_START_FAILED; @@ -822,9 +830,6 @@ static int http_request(const char *url, void *result, int target, int options) curl_slist_free_all(headers); strbuf_release(&buf); - if (ret == HTTP_OK) - credential_approve(&http_auth); - return ret; } |