summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNelson Benitez Leon <nelsonjesus.benitez@seap.minhap.es>2012-03-13 15:04:42 +0100
committerJunio C Hamano <gitster@pobox.com>2012-03-15 13:48:08 -0700
commit4896c4885e160383bfd460a5eaa9c75cb2f70fbc (patch)
tree1d74d1cf200f9ca80f21a14b575caaf12afb7297
parent6e17b8c16aa6fd535ffae04d332e9b7ee8a927d0 (diff)
downloadgit-4896c4885e160383bfd460a5eaa9c75cb2f70fbc.tar.gz
http: handle proxy authentication failure (error 407)
Handle http 407 error code by asking for credentials and retrying request in case credentials were not present, or marking credentials as rejected if they were already provided. Signed-off-by: Nelson Benitez Leon <nbenitezl@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--http.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/http.c b/http.c
index 7215f4976b..85399bf78e 100644
--- a/http.c
+++ b/http.c
@@ -842,6 +842,15 @@ static int http_request(const char *url, void *result, int target, int options)
init_curl_http_auth(slot->curl);
ret = HTTP_REAUTH;
}
+ } else if (results.http_code == 407) { /* Proxy authentication failure */
+ if (proxy_auth.username && proxy_auth.password) {
+ credential_reject(&proxy_auth);
+ ret = HTTP_NOAUTH;
+ } else {
+ credential_fill(&proxy_auth);
+ set_proxy_auth(slot->curl);
+ ret = HTTP_REAUTH;
+ }
} else {
if (!curl_errorstr[0])
strlcpy(curl_errorstr,