summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xcmdline/apt-report-mirror-failure2
-rw-r--r--debian/changelog8
-rw-r--r--methods/mirror.cc18
3 files changed, 25 insertions, 3 deletions
diff --git a/cmdline/apt-report-mirror-failure b/cmdline/apt-report-mirror-failure
index 1567e78e3..ef77d4954 100755
--- a/cmdline/apt-report-mirror-failure
+++ b/cmdline/apt-report-mirror-failure
@@ -5,7 +5,7 @@ import urllib
import apt_pkg
apt_pkg.init()
-url = apt_pkg.Config.Find("Acquire::Mirror::ReportFailures", None)
+url = apt_pkg.Config.Find("Acquire::Mirror::ReportFailures", "")
#"http://people.ubuntu.com:9000/mirror-failure")
#"http://localhost:9000/mirror-failure")
if not url:
diff --git a/debian/changelog b/debian/changelog
index bef5c3cad..5a764383e 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,11 @@
+apt (0.7.20.2ubuntu3) jaunty; urgency=low
+
+ * methods/mirror.cc:
+ - when download the mirror file and the server is down,
+ return a propper error message (LP: #278635)
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Thu, 19 Mar 2009 15:42:15 +0100
+
apt (0.7.20.2ubuntu2) jaunty; urgency=low
* apt-pkg/deb/dpkgpm.cc:
diff --git a/methods/mirror.cc b/methods/mirror.cc
index bdd783cc7..b3a956b95 100644
--- a/methods/mirror.cc
+++ b/methods/mirror.cc
@@ -123,6 +123,8 @@ bool MirrorMethod::Clean(string Dir)
bool MirrorMethod::DownloadMirrorFile(string mirror_uri_str)
{
+ if(Debug)
+ clog << "MirrorMethod::DownloadMirrorFile(): " << endl;
// check the file, if it is not older than RefreshInterval just use it
// otherwise try to get a new one
@@ -251,6 +253,9 @@ string MirrorMethod::GetMirrorFileName(string mirror_uri_str)
depth. */
bool MirrorMethod::Fetch(FetchItem *Itm)
{
+ if(Debug)
+ clog << "MirrorMethod::Fetch()" << endl;
+
// the http method uses Fetch(0) as a way to update the pipeline,
// just let it do its work in this case - Fetch() with a valid
// Itm will always run before the first Fetch(0)
@@ -269,8 +274,17 @@ bool MirrorMethod::Fetch(FetchItem *Itm)
DownloadMirrorFile(Itm->Uri);
}
- if(Mirror.empty())
- SelectMirror();
+ if(Mirror.empty()) {
+ if(!SelectMirror()) {
+ // no valid mirror selected, something went wrong downloading
+ // from the master mirror site most likely and there is
+ // no old mirror file availalbe
+ return false;
+ }
+ }
+ if(Debug)
+ clog << "selected mirror: " << Mirror << endl;
+
for (FetchItem *I = Queue; I != 0; I = I->Next)
{