|
@@ -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)
|
|
|
{
|