summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Vogt <michael.vogt@ubuntu.com>2009-08-19 11:28:34 +0200
committerMichael Vogt <michael.vogt@ubuntu.com>2009-08-19 11:28:34 +0200
commitf30eb61fde728f125bf7c673cadc17f43d82a2d0 (patch)
treec8ae7fbad1d15c3611104848c1d52abccd9904c9
parent9a64707c285290c4e191e04d92c0fab9f6f118f5 (diff)
parent889053489a8b9b91feeb698fc164446e9b5f9c67 (diff)
merged from the mvo branch
-rw-r--r--configure.in2
-rw-r--r--debian/NEWS (renamed from debian/NEWS.Debian)9
-rw-r--r--debian/changelog14
-rw-r--r--doc/apt.conf.5.xml15
-rw-r--r--methods/ftp.cc33
-rw-r--r--methods/http.cc31
-rw-r--r--methods/https.cc31
7 files changed, 89 insertions, 46 deletions
diff --git a/configure.in b/configure.in
index 9131e2fbe..7287b925a 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 2d3446d48..2131b8077 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,15 @@
+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)
+
+ -- Michael Vogt <mvo@debian.org> Wed, 19 Aug 2009 11:14:15 +0200
+
apt (0.7.22.2) unstable; urgency=low
* debian/apt.cron.daily:
@@ -233,7 +245,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 2b2430c83..1fe980d28 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::&lt;host&gt;</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::&lt;host&gt;</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 006e89394..1eba0f279 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