summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEugene V. Lyubimkin <jackyf@1501-debian>2008-10-25 01:33:40 +0300
committerEugene V. Lyubimkin <jackyf@1501-debian>2008-10-25 01:33:40 +0300
commit0d7a243df522cad460bc1f94f32c6b7f766cabb1 (patch)
tree9083b600eeffe55ac9566d63c910e155631481b4
parenta15489ce5d8946c6cf76e24afb5f9288814e49fc (diff)
Added fallback to uncompressed files while acquiring index files (Sources and Packages)
-rw-r--r--apt-pkg/acquire-item.cc25
-rw-r--r--debian/changelog9
2 files changed, 28 insertions, 6 deletions
diff --git a/apt-pkg/acquire-item.cc b/apt-pkg/acquire-item.cc
index 7cae6c8b7..b014092df 100644
--- a/apt-pkg/acquire-item.cc
+++ b/apt-pkg/acquire-item.cc
@@ -570,7 +570,7 @@ pkgAcqIndex::pkgAcqIndex(pkgAcquire *Owner,
} else {
CompressionExtension = comprExt;
}
- Desc.URI = URI + CompressionExtension;
+ Desc.URI = URI + (CompressionExtension == "plain" ? "" : CompressionExtension);
Desc.Description = URIDesc;
Desc.Owner = this;
@@ -597,19 +597,30 @@ string pkgAcqIndex::Custom600Headers()
void pkgAcqIndex::Failed(string Message,pkgAcquire::MethodConfig *Cnf)
{
+ bool descChanged = false;
// no .bz2 found, retry with .gz
if(Desc.URI.substr(Desc.URI.size()-3) == "bz2") {
- Desc.URI = Desc.URI.substr(0,Desc.URI.size()-3) + "gz";
+ Desc.URI = Desc.URI.substr(0,Desc.URI.size()-3) + "gz";
- // retry with a gzip one
- new pkgAcqIndex(Owner, RealURI, Desc.Description,Desc.ShortDesc,
+ new pkgAcqIndex(Owner, RealURI, Desc.Description,Desc.ShortDesc,
ExpectedHash, string(".gz"));
+ descChanged = true;
+ }
+ // no .gz found, retry with uncompressed
+ else if(Desc.URI.substr(Desc.URI.size()-2) == "gz") {
+ Desc.URI = Desc.URI.substr(0,Desc.URI.size()-2);
+
+ new pkgAcqIndex(Owner, RealURI, Desc.Description,Desc.ShortDesc,
+ ExpectedHash, string("plain"));
+ descChanged = true;
+ }
+ if (descChanged) {
Status = StatDone;
Complete = false;
Dequeue();
return;
- }
-
+ }
+
// on decompression failure, remove bad versions in partial/
if(Decompression && Erase) {
string s = _config->FindDir("Dir::State::lists") + "partial/";
@@ -706,6 +717,8 @@ void pkgAcqIndex::Done(string Message,unsigned long Size,string Hash,
decompProg = "bzip2";
else if(compExt == ".gz")
decompProg = "gzip";
+ else if(compExt == "ges" || compExt == "ces") // packaGES or sourCES
+ decompProg = "copy";
else {
_error->Error("Unsupported extension: %s", compExt.c_str());
return;
diff --git a/debian/changelog b/debian/changelog
index 0bb4fcdde..5c2c5f292 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,12 @@
+apt (0.7.17) unstable; urgency=low
+
+ [ Eugene V. Lyubimkin ]
+ * apt-pkg/acquire-item.cc:
+ - Added fallback to uncompressed 'Packages' if neither 'bz2' nor 'gz'
+ available. (Closes: #409284)
+
+ -- Eugene V. Lyubimkin <jackyf.devel@gmail.com> Fri, 24 Oct 2008 23:45:17 +0300
+
apt (0.7.16) unstable; urgency=low
[ Luca Bruno ]