summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Vogt <michael.vogt@ubuntu.com>2011-03-24 17:45:20 +0100
committerMichael Vogt <michael.vogt@ubuntu.com>2011-03-24 17:45:20 +0100
commit0004842de7eeac345b614fa0b6bd241af0c4cc34 (patch)
tree54a44e3a88c6426bd1257e60768f974c8f2e736c
parent83e6798e72fabee7ec333a7e897b095cda688c45 (diff)
do not crash if the mirror file fails to download
-rw-r--r--debian/changelog1
-rw-r--r--methods/mirror.cc7
2 files changed, 6 insertions, 2 deletions
diff --git a/debian/changelog b/debian/changelog
index 6ccb3dede..fc883dc0d 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -15,6 +15,7 @@ apt (0.8.13) unstable; urgency=low
- when downloading data, show the mirror being used
- randomize mirror list to ensure more even load
- merge fix from Matt Zimmerman, many thanks (LP: #741098)
+ - do not crash if the mirror file fails to download
-- Michael Vogt <michael.vogt@ubuntu.com> Thu, 10 Mar 2011 15:56:54 +0100
diff --git a/methods/mirror.cc b/methods/mirror.cc
index 9d8202dad..00757e61f 100644
--- a/methods/mirror.cc
+++ b/methods/mirror.cc
@@ -160,6 +160,9 @@ bool MirrorMethod::RandomizeMirrorFile(string mirror_file)
vector<string> content;
string line;
+ if (!FileExists(mirror_file))
+ return false;
+
// read
ifstream in(mirror_file.c_str());
while ( !in.eof() ) {
@@ -356,8 +359,8 @@ bool MirrorMethod::Fetch(FetchItem *Itm)
if(Itm->IndexFile && !DownloadedMirrorFile)
{
Clean(_config->FindDir("Dir::State::mirrors"));
- DownloadMirrorFile(Itm->Uri);
- RandomizeMirrorFile(MirrorFile);
+ if (DownloadMirrorFile(Itm->Uri))
+ RandomizeMirrorFile(MirrorFile);
}
if(AllMirrors.empty()) {