summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apt-pkg/acquire-item.cc9
-rwxr-xr-xtest/integration/test-apt-update-unauth21
2 files changed, 24 insertions, 6 deletions
diff --git a/apt-pkg/acquire-item.cc b/apt-pkg/acquire-item.cc
index 4ab4ef6a1..fd2ea08f8 100644
--- a/apt-pkg/acquire-item.cc
+++ b/apt-pkg/acquire-item.cc
@@ -1192,6 +1192,8 @@ void pkgAcqIndex::Done(string Message, unsigned long long Size,
// FIXME: can we void the "Erase" bool here as its very non-local?
std::string CompressedFile = _config->FindDir("Dir::State::lists") + "partial/";
CompressedFile += URItoFileName(RealURI);
+ if(_config->FindB("Acquire::GzipIndexes",false) == false)
+ CompressedFile += '.' + compExt;
// Remove the compressed version.
if (Erase == true)
@@ -1399,6 +1401,13 @@ void pkgAcqMetaBase::AbortTransaction()
// the transaction will abort, so stop anything that is idle
if ((*I)->Status == pkgAcquire::Item::StatIdle)
(*I)->Status = pkgAcquire::Item::StatDone;
+
+ // kill files in partial
+ string PartialFile = _config->FindDir("Dir::State::lists");
+ PartialFile += "partial/";
+ PartialFile += flNotDir((*I)->DestFile);
+ if(FileExists(PartialFile))
+ Rename(PartialFile, PartialFile + ".FAILED");
}
}
/*}}}*/
diff --git a/test/integration/test-apt-update-unauth b/test/integration/test-apt-update-unauth
index ade523ea7..cf5195024 100755
--- a/test/integration/test-apt-update-unauth
+++ b/test/integration/test-apt-update-unauth
@@ -26,34 +26,43 @@ runtest() {
# start unauthenticated
find rootdir/var/lib/apt/lists/ -type f | xargs rm -f
rm -f aptarchive/dists/unstable/*Release*
- # remove uncompressed version
- find aptarchive/ -name Packages | xargs rm -f
+
aptget update -qq --allow-insecure-repositories
+ # FIXME: this really shouldn't be needed
+ rm -f rootdir/var/lib/apt/lists/partial/*
+
# become authenticated
generatereleasefiles
signreleasefiles
+ # move uncompressed away
+ mv aptarchive/dists/unstable/main/binary-i386/Packages \
+ aptarchive/dists/unstable/main/binary-i386/Packages.uncompressed
+
# and ensure we re-check the downloaded data
msgtest "Check rollback on going from unauth -> auth"
# change the local packages file
PKGS=$(ls rootdir/var/lib/apt/lists/*Packages*)
echo "meep" > $PKGS
- ls -l rootdir/var/lib/apt/lists > lists.before
+ ls rootdir/var/lib/apt/lists/ > lists.before
# update and ensure all is reverted on the hashsum failure
- aptget update -o Debug::Acquire::Transaction=1 -o Debug::pkgAcquire::Auth=1 -o Debug::pkgAcquire::worker=0 > output.log 2>&1 || true
+ aptget update -o Debug::Acquire::Transaction=0 -o Debug::pkgAcquire::Auth=1 -o Debug::pkgAcquire::worker=0 -o Debug::acquire::http=0 > output.log 2>&1 || true
# ensure we have before what we have after
- ls -l rootdir/var/lib/apt/lists > lists.after
+ ls rootdir/var/lib/apt/lists/ > lists.after
if diff -u lists.before lists.after; then
msgpass
else
- #cat output.log
+ cat output.log
msgfail
fi
+ # move uncompressed back for release file
+ mv aptarchive/dists/unstable/main/binary-i386/Packages.uncompressed \
+ aptarchive/dists/unstable/main/binary-i386/Packages
}
for COMPRESSEDINDEXES in 'false' 'true'; do