Allow HTTP proxy to be overridden in config

The http_proxy / HTTPS_PROXY variables used by curl to control
proxying may not be suitable for git.  Allow the user to override them
in the configuration file.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Sam Vilain 2007-11-23 13:07:00 +13:00 committed by Junio C Hamano
parent b319ce4c14
commit 9c5665aa3c
2 changed files with 15 additions and 0 deletions

View File

@ -550,6 +550,10 @@ specified as 'gitcvs.<access_method>.<varname>' (where 'access_method'
is one of "ext" and "pserver") to make them apply only for the given is one of "ext" and "pserver") to make them apply only for the given
access method. access method.
http.proxy::
Override the HTTP proxy, normally configured using the 'http_proxy'
environment variable (see gitlink:curl[1]).
http.sslVerify:: http.sslVerify::
Whether to verify the SSL certificate when fetching or pushing Whether to verify the SSL certificate when fetching or pushing
over HTTPS. Can be overridden by the 'GIT_SSL_NO_VERIFY' environment over HTTPS. Can be overridden by the 'GIT_SSL_NO_VERIFY' environment

11
http.c
View File

@ -24,6 +24,7 @@ char *ssl_cainfo = NULL;
long curl_low_speed_limit = -1; long curl_low_speed_limit = -1;
long curl_low_speed_time = -1; long curl_low_speed_time = -1;
int curl_ftp_no_epsv = 0; int curl_ftp_no_epsv = 0;
char *curl_http_proxy = NULL;
struct curl_slist *pragma_header; struct curl_slist *pragma_header;
@ -160,6 +161,13 @@ static int http_options(const char *var, const char *value)
curl_ftp_no_epsv = git_config_bool(var, value); curl_ftp_no_epsv = git_config_bool(var, value);
return 0; return 0;
} }
if (!strcmp("http.proxy", var)) {
if (curl_http_proxy == NULL) {
curl_http_proxy = xmalloc(strlen(value)+1);
strcpy(curl_http_proxy, value);
}
return 0;
}
/* Fall back on the default ones */ /* Fall back on the default ones */
return git_default_config(var, value); return git_default_config(var, value);
@ -205,6 +213,9 @@ static CURL* get_curl_handle(void)
if (curl_ftp_no_epsv) if (curl_ftp_no_epsv)
curl_easy_setopt(result, CURLOPT_FTP_USE_EPSV, 0); curl_easy_setopt(result, CURLOPT_FTP_USE_EPSV, 0);
if (curl_http_proxy)
curl_easy_setopt(result, CURLOPT_PROXY, curl_http_proxy);
return result; return result;
} }