From 9c5665aa3c938b0e085ca34a8126110edcffa217 Mon Sep 17 00:00:00 2001 From: Sam Vilain Date: Fri, 23 Nov 2007 13:07:00 +1300 Subject: [PATCH] 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 --- Documentation/config.txt | 4 ++++ http.c | 11 +++++++++++ 2 files changed, 15 insertions(+) diff --git a/Documentation/config.txt b/Documentation/config.txt index 4124ad2970..15745de67b 100644 --- a/Documentation/config.txt +++ b/Documentation/config.txt @@ -550,6 +550,10 @@ specified as 'gitcvs..' (where 'access_method' is one of "ext" and "pserver") to make them apply only for the given access method. +http.proxy:: + Override the HTTP proxy, normally configured using the 'http_proxy' + environment variable (see gitlink:curl[1]). + http.sslVerify:: Whether to verify the SSL certificate when fetching or pushing over HTTPS. Can be overridden by the 'GIT_SSL_NO_VERIFY' environment diff --git a/http.c b/http.c index 87ebf7b865..e4aa9c19db 100644 --- a/http.c +++ b/http.c @@ -24,6 +24,7 @@ char *ssl_cainfo = NULL; long curl_low_speed_limit = -1; long curl_low_speed_time = -1; int curl_ftp_no_epsv = 0; +char *curl_http_proxy = NULL; 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); 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 */ return git_default_config(var, value); @@ -205,6 +213,9 @@ static CURL* get_curl_handle(void) if (curl_ftp_no_epsv) curl_easy_setopt(result, CURLOPT_FTP_USE_EPSV, 0); + if (curl_http_proxy) + curl_easy_setopt(result, CURLOPT_PROXY, curl_http_proxy); + return result; } -- 2.39.5