From: Michael Vogt Date: Wed, 19 Aug 2009 09:27:00 +0000 (+0200) Subject: merged from the jackyf-devel branch X-Git-Tag: 0.7.23~2^2 X-Git-Url: https://git.saurik.com/apt.git/commitdiff_plain/889053489a8b9b91feeb698fc164446e9b5f9c67?hp=-c merged from the jackyf-devel branch --- 889053489a8b9b91feeb698fc164446e9b5f9c67 diff --combined configure.in index 9131e2fbe,04d8a4712..7287b925a --- a/configure.in +++ b/configure.in @@@ -18,7 -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.20") ++AC_DEFINE_UNQUOTED(VERSION,"0.7.22.3") PACKAGE="apt" AC_DEFINE_UNQUOTED(PACKAGE,"$PACKAGE") AC_SUBST(PACKAGE) diff --combined debian/NEWS index 000000000,5730fd7c6..19f06793e mode 000000,100644..100644 --- a/debian/NEWS +++ b/debian/NEWS @@@ -1,0 -1,27 +1,27 @@@ -apt (0.7.20) unstable; urgency=low ++apt (0.7.22.3) unstable; urgency=low + + * Code that determines which proxy to use was changed. Now + 'Acquire::{http,ftp}::Proxy[::]' options have the highest priority, + and '{http,ftp}_proxy' environment variables are used only if options + mentioned above are not specified. + - -- Eugene V. Lyubimkin Thu, 18 Dec 2008 00:30:16 +0200 ++ -- Eugene V. Lyubimkin 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. + If you use a database created by an older version of apt, delete + it and allow it to be recreated the next time. + + -- Michael Vogt Wed, 26 Apr 2006 12:57:53 +0200 + + apt (0.5.25) unstable; urgency=low + + * apt-ftparchive --db now uses Berkeley DB version 4.2. If used with a + database created by an older version of apt, an attempt will be made + to upgrade the database, but this may not work in all cases. If your + database is not automatically upgraded, delete it and allow it to be + recreated the next time. + + -- Matt Zimmerman Sat, 8 May 2004 12:38:07 -0700 + diff --combined debian/changelog index 2d3446d48,758d7a4bd..2131b8077 --- a/debian/changelog +++ b/debian/changelog @@@ -1,229 -1,3 +1,241 @@@ ++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[::]' 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 Wed, 19 Aug 2009 11:14:15 +0200 ++ +apt (0.7.22.2) unstable; urgency=low + + * debian/apt.cron.daily: + - Make sure that VERBOSE is always set (Closes: #539366) + - Script can be disabled by APT::Periodic::Enable=0 (Closes: #485476) + - Support using debdelta to download packages (Closes: #532079) + + -- Julian Andres Klode Thu, 06 Aug 2009 12:17:19 +0200 + +apt (0.7.22.1) unstable; urgency=low + + [ Michael Vogt ] + * cmdline/apt-get.cc: + - honor APT::Get::Only-Source properly in FindSrc() (thanks to + Martin Pitt for reporting the problem), also Closes: #535362. + + [ Julian Andres Klode ] + * apt-pkg/contrib/mmap.cc: + - Fix FTBFS on GNU/kFreeBSD by disabling DynamicMMap::Grow() on + non-Linux architectures as it uses mremap (Closes: #539742). + * apt-pkg/sourcelist.cc: + - Only warn about missing sources.list if there is no sources.list.d + and vice versa as only one of them is needed (Closes: #539731). + * debian/control: + - Add myself to Uploaders. + - Increase Standards-Version to 3.8.2.0. + + -- Julian Andres Klode Mon, 03 Aug 2009 12:48:31 +0200 + +apt (0.7.22) unstable; urgency=low + + [ Christian Perrier ] + * Documentation translations: + - Fix a typo in apt-get(8) French translation. Closes: #525043 + Thanks to Guillaume Delacour for spotting it. + - Updated apt.conf(5) manpgae French translation. + Thanks to Aurélien Couderc. + * Translations: + - fr.po + - sk.po. Closes: #525857 + - ru.po. Closes: #526816 + - eu.po. Closes: #528985 + - zh_CN.po. Closes: #531390 + - fr.po + - it.po. Closes: #531758 + - ca.po. Closes: #531921 + - de.po. Closes: #536430 + * Added translations + - ast.po (Asturian by Marcos Alvareez Costales). + Closes: #529007, #529730, #535328 + + [ David Kalnischkies ] + * [ABI break] support '#' in apt.conf and /etc/apt/preferences + (closes: #189866) + * [ABI break] Allow pinning by codename (closes: #97564) + * support running "--simulate" as user + * add depth information to the debug output and show what depends + type triggers a autoinst (closes: #458389) + * add Debug::pkgDepCache::Marker with more detailed debug output + (closes: #87520) + * add Debug::pkgProblemResolver::ShowScores and make the scores + adjustable + * do not write state file in simulate mode (closes: #433007) + * add hook for MarkInstall and MarkDelete (closes: #470035) + * fix typo in apt-pkg/acquire.cc which prevents Dl-Limit to work + correctly when downloading from multiple sites (Closes: #534752) + * add the various foldmarkers in apt-pkg & cmdline (no code change) + * versions with a pin of -1 shouldn't be a candidate (Closes: #355237) + * prefer mmap as memory allocator in MMap instead of a static char + array which can (at least in theory) grow dynamic + * eliminate (hopefully all) segfaults in pkgcachegen.cc and mmap.cc + which can arise if cache doesn't fit into the mmap (Closes: #535218) + * display warnings instead of errors if the parts dirs doesn't exist + + [ Michael Vogt ] + * honor the dpkg hold state in new Marker hooks (closes: #64141) + * debian/apt.cron.daily: + - if the timestamp is too far in the future, delete it + * apt-pkg/acquire.cc: + - make the max pipeline depth of the acquire queue configurable + via Acquire::Max-Pipeline-Depth + * apt-pkg/deb/dpkgpm.cc: + - add Dpkg::UseIoNice boolean option to run dpkg with ionice -c3 + (off by default) + - send "dpkg-exec" message on the status fd when dpkg is run + - provide DPkg::Chroot-Directory config option (useful for testing) + - fix potential hang when in a backgroud process group + * apt-pkg/algorithms.cc: + - consider recommends when making the scores for the problem + resolver + * apt-pkg/acquire-worker.cc: + - show error details of failed methods + * apt-pkg/contrib/fileutl.cc: + - if a process aborts with signal, show signal number + * methods/http.cc: + - ignore SIGPIPE, we deal with EPIPE from write in + HttpMethod::ServerDie() (LP: #385144) + * Only run Download-Upgradable and Unattended-Upgrades if the initial + update was successful Closes: #341970 + * apt-pkg/indexcopy.cc: + - support having CDs with no Packages file (just a Packages.gz) + by not forcing a verification on non-existing files + (LP: #255545) + - remove the gettext from a string that consists entirely + of variables (LP: #56792) + * apt-pkg/cacheiterators.h: + - add missing checks for Owner == 0 in end() + * apt-pkg/indexrecords.cc: + - fix some i18n issues + * apt-pkg/contrib/strutl.h: + - add new strprintf() function to make i18n strings easier + - fix compiler warning + * apt-pkg/deb/debsystem.cc: + - make strings i18n able + * fix problematic use of tolower() when calculating the version + hash by using locale independant tolower_ascii() function. + Thanks to M. Vefa Bicakci (LP: #80248) + * build fixes for g++-4.4 + * cmdline/apt-mark: + - add "showauto" option to show automatically installed packages + * document --install-recommends and --no-install-recommends + (thanks to Dereck Wonnacott, LP: #126180) + * doc/apt.conf.5.xml: + - merged patch from Aurélien Couderc to improve the text + (thanks!) + * [ABI] merged the libudev-dlopen branch, this allows to pass + "apt-udev-auto" to Acquire::Cdrom::mount and the cdrom method will + dynamically find/mount the cdrom device (if libhal is available) + + [ Julian Andres Klode ] + * apt-pkg/contrib/configuration.cc: Fix a small memory leak in + ReadConfigFile. + * Introduce support for the Enhances field. (Closes: #137583) + * Support /etc/apt/preferences.d, by adding ReadPinDir() (Closes: #535512) + * configure-index: document Dir::Etc::SourceParts and some other options + (Closes: #459605) + * Remove Eugene V. Lyubimkin from uploaders as requested. + * apt-pkg/contrib/hashes.cc, apt-pkg/contrib/md5.cc: + - Support reading until EOF if Size=0 to match behaviour of + SHA1Summation and SHA256Summation + + [ Osamu Aoki ] + * Updated cron script to support backups by hardlinks and + verbose levels. All features turned off by default. + * Added more error handlings. Closes: #438803, #462734, #454989 + * Documented all cron script related configuration items in + configure-index. + + [ Dereck Wonnacott ] + * apt-ftparchive might write corrupt Release files (LP: #46439) + * Apply --important option to apt-cache depends (LP: #16947) + + [ Otavio Salvador ] + * Apply patch from Sami Liedes to reduce the + number of times we call progress bar updating and debugging + configuration settings. + * Apply patch from Sami Liedes to avoid unecessary + temporary allocations. + + -- Michael Vogt Wed, 29 Jul 2009 19:16:22 +0200 + +apt (0.7.21) unstable; urgency=low + + [ Christian Perrier ] + * Translations: + - bg.po. Closes: #513211 + - zh_TW.po. Closes: #513311 + - nb.po. Closes: #513843 + - fr.po. Closes: #520430 + - sv.po. Closes: #518070 + - sk.po. Closes: #520403 + - it.po. Closes: #522222 + - sk.po. Closes: #520403 + + [ Jamie Strandboge ] + * apt.cron.daily: catch invalid dates due to DST time changes + in the stamp files + + [ Michael Vogt ] + * methods/gpgv.cc: + - properly check for expired and revoked keys (closes: #433091) + * apt-pkg/contrib/strutl.cc: + - fix TimeToStr i18n (LP: #289807) + * [ABI break] merge support for http redirects, thanks to + Jeff Licquia and Anthony Towns + * [ABI break] use int for the package IDs (thanks to Steve Cotton) + * apt-pkg/pkgcache.cc: + - do not run "dpkg --configure pkg" if pkg is in trigger-awaited + state (LP: #322955) + * methods/https.cc: + - add Acquire::https::AllowRedirect support + * Clarify the --help for 'purge' (LP: #243948) + * cmdline/apt-get.cc + - fix "apt-get source pkg" if there is a binary package and + a source package of the same name but from different + packages (LP: #330103) + + [ Colin Watson ] + * cmdline/acqprogress.cc: + - Call pkgAcquireStatus::Pulse even if quiet, so that we still get + dlstatus messages on the status-fd (LP: #290234). + + -- Michael Vogt Tue, 14 Apr 2009 14:12:51 +0200 + +apt (0.7.20.2) unstable; urgency=medium + + [ Eugene V. Lyubimkin ] + * Urgency set to medium due to RC bug fix. + * doc/apt.ent, apt-get.8.xml: + - Fix invalid XML entities. (Closes: #514402) + + -- Eugene V. Lyubimkin Sat, 07 Feb 2009 16:48:21 +0200 + +apt (0.7.20.1) unstable; urgency=low + + [ Michael Vogt ] + * apt-pkg/pkgcachegen.cc: + - fix apt-cache search for localized description + (closes: #512110) + + [ Christian Perrier ] + * Translations: + - fr.po: fix spelling error to "défectueux". Thanks to Thomas Péteul. + + -- Michael Vogt Tue, 20 Jan 2009 09:35:05 +0100 + apt (0.7.20) unstable; urgency=low [ Eugene V. Lyubimkin ] @@@ -233,18 -7,18 +245,18 @@@ * 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. (Closes: #438559) - Mentioned '/* ... */' comments. (Closes: #507601) - * 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[::]' 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) + * doc/examples/sources.list: + - Removed obsolete commented non-us deb-src entry, replaced it with + 'deb-src security.debian.org' one. (Closes: #411298) + * apt-pkg/contrib/mmap.cc: + - Added instruction how to work around MMap error in MMap error message. + (Closes: #385674, 436028) * COPYING: - Actualized. Removed obsolete Qt section, added GPLv2 clause. (Closes: #440049, #509337) @@@ -263,12 -37,24 +275,12 @@@ * Translations: - Finnish updated. Closes: #508449 - Galician updated. Closes: #509151 - - -- Eugene V. Lyubimkin Mon, 15 Dec 2008 23:48:46 +0200 - -apt (0.7.20~exp2) unstable; urgency=low - - [ Eugene V. Lyubimkin ] - * doc/examples/sources.list: - - Removed obsolete commented non-us deb-src entry, replaced it with - 'deb-src security.debian.org' one. (Closes: #411298) - * apt-pkg/contrib/mmap.cc: - - Added instruction how to work around MMap error in MMap error message. - (Closes: #385674, 436028) - - [ Christian Perrier ] - * Translations: + - Catalan updated. Closes: #509375 + - Vietnamese updated. Closes: #509422 + - Traditional Chinese added. Closes: #510664 - French corrected (remove awful use of first person) - -- Michael Vogt Tue, 02 Dec 2008 20:30:14 +0100 + -- Michael Vogt Mon, 05 Jan 2009 08:59:20 +0100 apt (0.7.19) unstable; urgency=low @@@ -286,6 -72,7 +298,6 @@@ is a request to install only one package and it is not installable. (Closes: #419521) - [ Michael Vogt ] - fix SIGHUP handling (closes: #463030) diff --combined doc/apt.conf.5.xml index 2b2430c83,4d9e708a8..1fe980d28 --- a/doc/apt.conf.5.xml +++ b/doc/apt.conf.5.xml @@@ -71,7 -71,7 +71,7 @@@ APT with newlines placed to make it more readable. Lists can be created by - opening a scope and including a single word enclosed in quotes followed by a + opening a scope and including a single string enclosed in quotes followed by a semicolon. Multiple entries can be included, each separated by a semicolon. @@@ -88,8 -88,7 +88,8 @@@ DPkg::Pre-Install-Pkgs {"/usr/sbin/dpkg Two specials are allowed, #include and #clear #include will include the given file, unless the filename ends in a slash, then the whole directory is included. - #clear is used to erase a list of names. + #clear is used to erase a part of the configuration tree. The + specified element and all its descendents are erased. All of the APT tools take a -o option which allows an arbitrary configuration directive to be specified on the command line. The syntax is a full option @@@ -111,7 -110,7 +111,7 @@@ Default-Release Default release to install packages from if more than one - version available. Contains release name or release version. Examples: 'stable', 'testing', 'unstable', '4.0', '5.0*'. Release codenames ('etch', 'lenny' etc.) are not allowed now. See also &apt-preferences;. + version available. Contains release name, codename or release version. Examples: 'stable', 'testing', 'unstable', 'lenny', 'squeeze', '4.0', '5.0*'. See also &apt-preferences;. Ignore-Hold @@@ -175,7 -174,7 +175,7 @@@ PDiffs - Try do download deltas called PDiffs for + Try to download deltas called PDiffs for Packages or Sources files instead of downloading whole ones. True by default. @@@ -203,8 -202,9 +203,9 @@@ standard form of http://[[user][:pass]@]host[:port]/. Per host proxies can also be specified by using the form http::Proxy::<host> with the special keyword DIRECT - meaning to use no proxies. The http_proxy environment variable - will override all settings. + meaning to use no proxies. If no one of the above settings is specified, + http_proxy environment variable + will be used. Three settings are provided for cache control with HTTP/1.1 compliant proxy caches. No-Cache tells the proxy to not use its cached @@@ -252,9 -252,13 +253,13 @@@ ftp - FTP URIs; ftp::Proxy is the default proxy server to use. It is in the - standard form of ftp://[[user][:pass]@]host[:port]/ and is - overridden by the ftp_proxy environment variable. To use a ftp + FTP URIs; ftp::Proxy is the default ftp proxy to use. It is in the + standard form of ftp://[[user][:pass]@]host[:port]/. Per + host proxies can also be specified by using the form + ftp::Proxy::<host> with the special keyword DIRECT + meaning to use no proxies. If no one of the above settings is specified, + ftp_proxy environment variable + will be used. To use a ftp proxy you will have to set the ftp::ProxyLogin script in the configuration file. This entry specifies the commands to send to tell the proxy server what to connect to. Please see @@@ -680,33 -684,12 +685,33 @@@ + + Debug::pkgDepCache::Marker + + + Generate debug messages describing which package is marked + as keep/install/remove while the ProblemResolver does his work. + Each addition or deletion may trigger additional actions; + they are shown indented two additional space under the original entry. + The format for each line is MarkKeep, + MarkDelete or MarkInstall followed by + package-name <a.b.c -> d.e.f | x.y.z> (section) + where a.b.c is the current version of the package, + d.e.f is the version considered for installation and + x.y.z is a newer version, but not considered for installation + (because of a low pin score). The later two can be omitted if there is none or if + it is the same version as the installed. + section is the name of the section the package appears in. + + + + Debug::pkgInitConfig - Dump the default configuration to standard output on + Dump the default configuration to standard error on startup. @@@ -778,17 -761,6 +783,17 @@@ + + Debug::pkgProblemResolver::ShowScores + + + Display a list of all installed packages with their calculated score + used by the pkgProblemResolver. The description of the package + is the same as described in Debug::pkgDepCache::Marker + + + + Debug::sourceList @@@ -800,8 -772,6 +805,8 @@@ + diff --combined methods/http.cc index 006e89394,5d18b3adc..1eba0f279 --- a/methods/http.cc +++ b/methods/http.cc @@@ -39,7 -39,6 +39,7 @@@ #include #include #include +#include #include // Internet stuff @@@ -58,7 -57,6 +58,7 @@@ int HttpMethod::FailFd = -1 time_t HttpMethod::FailTime = 0; unsigned long PipelineDepth = 10; unsigned long TimeOut = 120; +bool AllowRedirect = false; bool Debug = false; URI Proxy; @@@ -311,22 -309,27 +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) @@@ -630,12 -633,6 +635,12 @@@ bool ServerState::HeaderLine(string Lin return true; } + if (stringcasecmp(Tag,"Location:") == 0) + { + Location = Val; + return true; + } + return true; } /*}}}*/ @@@ -908,9 -905,7 +913,9 @@@ bool HttpMethod::ServerDie(ServerState 1 - IMS hit 3 - Unrecoverable error 4 - Error with error content page - 5 - Unrecoverable non-server error (close the connection) */ + 5 - Unrecoverable non-server error (close the connection) + 6 - Try again with a new or changed URI + */ int HttpMethod::DealWithHeaders(FetchResult &Res,ServerState *Srv) { // Not Modified @@@ -922,27 -917,6 +927,27 @@@ return 1; } + /* Redirect + * + * Note that it is only OK for us to treat all redirection the same + * because we *always* use GET, not other HTTP methods. There are + * three redirection codes for which it is not appropriate that we + * redirect. Pass on those codes so the error handling kicks in. + */ + if (AllowRedirect + && (Srv->Result > 300 && Srv->Result < 400) + && (Srv->Result != 300 // Multiple Choices + && Srv->Result != 304 // Not Modified + && Srv->Result != 306)) // (Not part of HTTP/1.1, reserved) + { + if (!Srv->Location.empty()) + { + NextURI = Srv->Location; + return 6; + } + /* else pass through for error message */ + } + /* We have a reply we dont handle. This should indicate a perm server failure */ if (Srv->Result < 200 || Srv->Result >= 300) @@@ -1057,7 -1031,6 +1062,7 @@@ bool HttpMethod::Configuration(string M if (pkgAcqMethod::Configuration(Message) == false) return false; + AllowRedirect = _config->FindB("Acquire::http::AllowRedirect",true); TimeOut = _config->FindI("Acquire::http::Timeout",TimeOut); PipelineDepth = _config->FindI("Acquire::http::Pipeline-Depth", PipelineDepth); @@@ -1071,10 -1044,6 +1076,10 @@@ /* */ int HttpMethod::Loop() { + typedef vector StringVector; + typedef vector::iterator StringVectorIterator; + map Redirected; + signal(SIGTERM,SigTerm); signal(SIGINT,SigTerm); @@@ -1261,46 -1230,6 +1266,46 @@@ break; } + // Try again with a new URL + case 6: + { + // Clear rest of response if there is content + if (Server->HaveContent) + { + File = new FileFd("/dev/null",FileFd::WriteExists); + Server->RunData(); + delete File; + File = 0; + } + + /* Detect redirect loops. No more redirects are allowed + after the same URI is seen twice in a queue item. */ + StringVector &R = Redirected[Queue->DestFile]; + bool StopRedirects = false; + if (R.size() == 0) + R.push_back(Queue->Uri); + else if (R[0] == "STOP" || R.size() > 10) + StopRedirects = true; + else + { + for (StringVectorIterator I = R.begin(); I != R.end(); I++) + if (Queue->Uri == *I) + { + R[0] = "STOP"; + break; + } + + R.push_back(Queue->Uri); + } + + if (StopRedirects == false) + Redirect(NextURI); + else + Fail(); + + break; + } + default: Fail(_("Internal error")); break; @@@ -1316,11 -1245,9 +1321,11 @@@ int main() { setlocale(LC_ALL, ""); + // ignore SIGPIPE, this can happen on write() if the socket + // closes the connection (this is dealt with via ServerDie()) + signal(SIGPIPE, SIG_IGN); HttpMethod Mth; - return Mth.Loop(); } diff --combined methods/https.cc index 8bf44b52a,728869fa2..37d93e308 --- a/methods/https.cc +++ b/methods/https.cc @@@ -61,19 -61,26 +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 @@@ -208,11 -215,6 +215,11 @@@ bool HttpsMethod::Fetch(FetchItem *Itm curl_easy_setopt(curl, CURLOPT_TIMEOUT, timeout); curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, timeout); + // set redirect options and default to 10 redirects + bool AllowRedirect = _config->FindI("Acquire::https::AllowRedirect", true); + curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, AllowRedirect); + curl_easy_setopt(curl, CURLOPT_MAXREDIRS, 10); + // debug if(_config->FindB("Debug::Acquire::https", false)) curl_easy_setopt(curl, CURLOPT_VERBOSE, true); @@@ -253,6 -255,7 +260,6 @@@ // cleanup if(success != 0) { - unlink(File->Name().c_str()); _error->Error("%s", curl_errorstr); Fail(); return true;