summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNelson Benitez Leon <nelsonjesus.benitez@seap.minhap.es>2012-03-02 14:55:57 +0100
committerJunio C Hamano <gitster@pobox.com>2012-03-02 14:40:14 -0800
commitdd6139971a18e25a5089c0f96dc80e454683ef0b (patch)
treed94e868af6234f4336c1d8f7cbace1bb423c0583
parent222433ee4b57750174875ce6b252d10c009a1fa9 (diff)
downloadgit-nl/http-proxy-auth.tar.gz
http: support proxies that require authenticationnl/http-proxy-auth
When the proxy server specified by the http.proxy configuration or the http_proxy environment variable requires authentication, git failed to connect to the proxy, because we did not configure the cURL handle with CURLOPT_PROXYAUTH. When a proxy is in use, and you tell git that the proxy requires authentication by having username in the http.proxy configuration, an extra request needs to be made to the proxy to find out what authentication method it supports, as this patch uses CURLAUTH_ANY to let the library pick the most secure method supported by the proxy server. The extra round-trip adds extra latency, but relieves the user from the burden to configure a specific authentication method. If it becomes problem, a later patch could add a configuration option to specify what method to use, but let's start simple for the time being. Signed-off-by: Nelson Benitez Leon <nbenitezl@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--http.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/http.c b/http.c
index 0ffd79cd81..8ac8eb6c38 100644
--- a/http.c
+++ b/http.c
@@ -295,8 +295,10 @@ static CURL *get_curl_handle(void)
if (curl_ftp_no_epsv)
curl_easy_setopt(result, CURLOPT_FTP_USE_EPSV, 0);
- if (curl_http_proxy)
+ if (curl_http_proxy) {
curl_easy_setopt(result, CURLOPT_PROXY, curl_http_proxy);
+ curl_easy_setopt(result, CURLOPT_PROXYAUTH, CURLAUTH_ANY);
+ }
return result;
}