diff options
-rw-r--r-- | configure.in | 2 | ||||
-rw-r--r-- | debian/NEWS (renamed from debian/NEWS.Debian) | 9 | ||||
-rw-r--r-- | debian/changelog | 14 | ||||
-rw-r--r-- | doc/apt.conf.5.xml | 15 | ||||
-rw-r--r-- | methods/ftp.cc | 33 | ||||
-rw-r--r-- | methods/http.cc | 31 | ||||
-rw-r--r-- | methods/https.cc | 31 |
7 files changed, 87 insertions, 48 deletions
diff --git a/configure.in b/configure.in index 0dd1beb1a..ff11078b3 100644 --- a/configure.in +++ b/configure.in @@ -18,7 +18,7 @@ AC_CONFIG_AUX_DIR(buildlib) AC_CONFIG_HEADER(include/config.h:buildlib/config.h.in include/apti18n.h:buildlib/apti18n.h.in) dnl -- SET THIS TO THE RELEASE VERSION -- -AC_DEFINE_UNQUOTED(VERSION,"0.7.22.1") +AC_DEFINE_UNQUOTED(VERSION,"0.7.22.3") PACKAGE="apt" AC_DEFINE_UNQUOTED(PACKAGE,"$PACKAGE") AC_SUBST(PACKAGE) diff --git a/debian/NEWS.Debian b/debian/NEWS index f44d1966b..19f06793e 100644 --- a/debian/NEWS.Debian +++ b/debian/NEWS @@ -1,3 +1,12 @@ +apt (0.7.22.3) unstable; urgency=low + + * Code that determines which proxy to use was changed. Now + 'Acquire::{http,ftp}::Proxy[::<host>]' options have the highest priority, + and '{http,ftp}_proxy' environment variables are used only if options + mentioned above are not specified. + + -- Eugene V. Lyubimkin <jackyf.devel@gmail.com> Thu, 19 Aug 2009 11:26:16 +0200 + apt (0.6.44) unstable; urgency=low * apt-ftparchive --db now uses Berkeley DB_BTREE instead of DB_HASH. diff --git a/debian/changelog b/debian/changelog index 00afc704b..1ee88f0ba 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,12 @@ -apt (0.7.22.3) unstable; urgency=low +apt (0.7.22.3) UNRELEASED; urgency=low + + [ Eugene V. Lyubimkin ] + * methods/{http,https,ftp}, doc/apt.conf.5.xml: + - Changed and unified the code that determines which proxy to use. Now + 'Acquire::{http,ftp}::Proxy[::<host>]' options have the highest priority, + and '{http,ftp}_proxy' environment variables are used only if options + mentioned above are not specified. + (Closes: #445985, #157759, #320184, #365880, #479617) [ David Kalnischkies ] * cmdline/apt-get.cc: @@ -43,7 +51,7 @@ apt (0.7.22.3) unstable; urgency=low * apt-pkg/indexcopy.cc: - fix a memory leak then the Release file not exists (Closes: #511556) - -- David Kalnischkies <david@kalnischkies.com> Sat, 08 Aug 2009 09:40:08 +0200 + -- Michael Vogt <michael.vogt@ubuntu.com> Thu, 27 Aug 2009 14:15:39 +0200 apt (0.7.22.2) unstable; urgency=low @@ -280,7 +288,7 @@ apt (0.7.20) unstable; urgency=low * buildlib/config.{sub,guess}: - Renewed. This fixes lintian errors. * doc/apt.conf.5.xml, debian/apt-transport-https: - - Documented briefly 'APT::https' group of options. (Closes: #507398) + - Documented briefly 'Acquire::https' group of options. (Closes: #507398) - Applied patch from Daniel Burrows to document 'Debug' group of options. (Closes: #457265) - Mentioned 'APT::Periodic' and 'APT::Archives' groups of options. diff --git a/doc/apt.conf.5.xml b/doc/apt.conf.5.xml index 59235f115..c0c247ae9 100644 --- a/doc/apt.conf.5.xml +++ b/doc/apt.conf.5.xml @@ -203,8 +203,9 @@ DPkg::Pre-Install-Pkgs {"/usr/sbin/dpkg-preconfigure --apt";}; standard form of <literal>http://[[user][:pass]@]host[:port]/</literal>. Per host proxies can also be specified by using the form <literal>http::Proxy::<host></literal> with the special keyword <literal>DIRECT</literal> - meaning to use no proxies. The <envar>http_proxy</envar> environment variable - will override all settings.</para> + meaning to use no proxies. If no one of the above settings is specified, + <envar>http_proxy</envar> environment variable + will be used.</para> <para>Three settings are provided for cache control with HTTP/1.1 compliant proxy caches. <literal>No-Cache</literal> tells the proxy to not use its cached @@ -252,9 +253,13 @@ DPkg::Pre-Install-Pkgs {"/usr/sbin/dpkg-preconfigure --apt";}; </para></listitem></varlistentry> <varlistentry><term>ftp</term> - <listitem><para>FTP URIs; ftp::Proxy is the default proxy server to use. It is in the - standard form of <literal>ftp://[[user][:pass]@]host[:port]/</literal> and is - overridden by the <envar>ftp_proxy</envar> environment variable. To use a ftp + <listitem><para>FTP URIs; ftp::Proxy is the default ftp proxy to use. It is in the + standard form of <literal>ftp://[[user][:pass]@]host[:port]/</literal>. Per + host proxies can also be specified by using the form + <literal>ftp::Proxy::<host></literal> with the special keyword <literal>DIRECT</literal> + meaning to use no proxies. If no one of the above settings is specified, + <envar>ftp_proxy</envar> environment variable + will be used. To use a ftp proxy you will have to set the <literal>ftp::ProxyLogin</literal> script in the configuration file. This entry specifies the commands to send to tell the proxy server what to connect to. Please see diff --git a/methods/ftp.cc b/methods/ftp.cc index 554a24cf5..c91600ad5 100644 --- a/methods/ftp.cc +++ b/methods/ftp.cc @@ -112,23 +112,28 @@ bool FTPConn::Open(pkgAcqMethod *Owner) Close(); // Determine the proxy setting - if (getenv("ftp_proxy") == 0) + string SpecificProxy = _config->Find("Acquire::ftp::Proxy::" + ServerName.Host); + if (!SpecificProxy.empty()) { - string DefProxy = _config->Find("Acquire::ftp::Proxy"); - string SpecificProxy = _config->Find("Acquire::ftp::Proxy::" + ServerName.Host); - if (SpecificProxy.empty() == false) - { - if (SpecificProxy == "DIRECT") - Proxy = ""; - else - Proxy = SpecificProxy; - } - else - Proxy = DefProxy; + if (SpecificProxy == "DIRECT") + Proxy = ""; + else + Proxy = SpecificProxy; } else - Proxy = getenv("ftp_proxy"); - + { + string DefProxy = _config->Find("Acquire::ftp::Proxy"); + if (!DefProxy.empty()) + { + Proxy = DefProxy; + } + else + { + char* result = getenv("ftp_proxy"); + Proxy = result ? result : ""; + } + } + // Parse no_proxy, a , separated list of domains if (getenv("no_proxy") != 0) { diff --git a/methods/http.cc b/methods/http.cc index df62034e3..461a98406 100644 --- a/methods/http.cc +++ b/methods/http.cc @@ -311,22 +311,27 @@ bool ServerState::Open() Persistent = true; // Determine the proxy setting - if (getenv("http_proxy") == 0) + string SpecificProxy = _config->Find("Acquire::http::Proxy::" + ServerName.Host); + if (!SpecificProxy.empty()) { - string DefProxy = _config->Find("Acquire::http::Proxy"); - string SpecificProxy = _config->Find("Acquire::http::Proxy::" + ServerName.Host); - if (SpecificProxy.empty() == false) - { - if (SpecificProxy == "DIRECT") - Proxy = ""; - else - Proxy = SpecificProxy; - } - else - Proxy = DefProxy; + if (SpecificProxy == "DIRECT") + Proxy = ""; + else + Proxy = SpecificProxy; } else - Proxy = getenv("http_proxy"); + { + string DefProxy = _config->Find("Acquire::http::Proxy"); + if (!DefProxy.empty()) + { + Proxy = DefProxy; + } + else + { + char* result = getenv("http_proxy"); + Proxy = result ? result : ""; + } + } // Parse no_proxy, a , separated list of domains if (getenv("no_proxy") != 0) diff --git a/methods/https.cc b/methods/https.cc index 8bf44b52a..37d93e308 100644 --- a/methods/https.cc +++ b/methods/https.cc @@ -61,19 +61,26 @@ void HttpsMethod::SetupProxy() URI ServerName = Queue->Uri; // Determine the proxy setting - if (getenv("http_proxy") == 0) + string SpecificProxy = _config->Find("Acquire::http::Proxy::" + ServerName.Host); + if (!SpecificProxy.empty()) { - string DefProxy = _config->Find("Acquire::http::Proxy"); - string SpecificProxy = _config->Find("Acquire::http::Proxy::" + ServerName.Host); - if (SpecificProxy.empty() == false) - { - if (SpecificProxy == "DIRECT") - Proxy = ""; - else - Proxy = SpecificProxy; - } - else - Proxy = DefProxy; + if (SpecificProxy == "DIRECT") + Proxy = ""; + else + Proxy = SpecificProxy; + } + else + { + string DefProxy = _config->Find("Acquire::http::Proxy"); + if (!DefProxy.empty()) + { + Proxy = DefProxy; + } + else + { + char* result = getenv("http_proxy"); + Proxy = result ? result : ""; + } } // Parse no_proxy, a , separated list of domains |