Преглед изворни кода

do not crash if the mirror file fails to download

Michael Vogt пре 15 година
родитељ
комит
0004842de7
2 измењених фајлова са 6 додато и 2 уклоњено
  1. 1 0
      debian/changelog
  2. 5 2
      methods/mirror.cc

+ 1 - 0
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
 

+ 5 - 2
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()) {