summaryrefslogtreecommitdiff
path: root/apt-pkg
diff options
context:
space:
mode:
Diffstat (limited to 'apt-pkg')
-rw-r--r--apt-pkg/update.cc44
1 files changed, 25 insertions, 19 deletions
diff --git a/apt-pkg/update.cc b/apt-pkg/update.cc
index 0d901eab1..f7075c446 100644
--- a/apt-pkg/update.cc
+++ b/apt-pkg/update.cc
@@ -56,26 +56,38 @@ bool AcquireUpdate(pkgAcquire &Fetcher, int const PulseInterval,
else
res = Fetcher.Run();
- if (res == pkgAcquire::Failed)
- return false;
-
- bool Failed = false;
+ bool const errorsWereReported = (res == pkgAcquire::Failed);
+ bool Failed = errorsWereReported;
bool TransientNetworkFailure = false;
bool AllFailed = true;
for (pkgAcquire::ItemIterator I = Fetcher.ItemsBegin();
I != Fetcher.ItemsEnd(); ++I)
{
- if ((*I)->Status == pkgAcquire::Item::StatDone) {
- AllFailed = false;
- continue;
+ switch ((*I)->Status)
+ {
+ case pkgAcquire::Item::StatDone:
+ AllFailed = false;
+ continue;
+ case pkgAcquire::Item::StatTransientNetworkError:
+ TransientNetworkFailure = true;
+ break;
+ case pkgAcquire::Item::StatIdle:
+ case pkgAcquire::Item::StatFetching:
+ case pkgAcquire::Item::StatError:
+ case pkgAcquire::Item::StatAuthError:
+ Failed = true;
+ break;
}
(*I)->Finished();
+ if (errorsWereReported)
+ continue;
+
::URI uri((*I)->DescURI());
uri.User.clear();
uri.Password.clear();
- string descUri = string(uri);
+ std::string const descUri = std::string(uri);
// Show an error for non-transient failures, otherwise only warn
if ((*I)->Status == pkgAcquire::Item::StatTransientNetworkError)
_error->Warning(_("Failed to fetch %s %s"), descUri.c_str(),
@@ -83,15 +95,8 @@ bool AcquireUpdate(pkgAcquire &Fetcher, int const PulseInterval,
else
_error->Error(_("Failed to fetch %s %s"), descUri.c_str(),
(*I)->ErrorText.c_str());
- if ((*I)->Status == pkgAcquire::Item::StatTransientNetworkError)
- {
- TransientNetworkFailure = true;
- continue;
- }
-
- Failed = true;
}
-
+
// Clean out any old list files
// Keep "APT::Get::List-Cleanup" name for compatibility, but
// this is really a global option for the APT library now
@@ -106,13 +111,14 @@ bool AcquireUpdate(pkgAcquire &Fetcher, int const PulseInterval,
}
bool Res = true;
-
- if (TransientNetworkFailure == true)
+
+ if (errorsWereReported == true)
+ Res = false;
+ else if (TransientNetworkFailure == true)
Res = _error->Warning(_("Some index files failed to download. They have been ignored, or old ones used instead."));
else if (Failed == true)
Res = _error->Error(_("Some index files failed to download. They have been ignored, or old ones used instead."));
-
// Run the success scripts if all was fine
if (RunUpdateScripts == true)
{