diff options
Diffstat (limited to 'installerbuilder/libinstaller/packagemanagercore_p.cpp')
-rw-r--r-- | installerbuilder/libinstaller/packagemanagercore_p.cpp | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/installerbuilder/libinstaller/packagemanagercore_p.cpp b/installerbuilder/libinstaller/packagemanagercore_p.cpp index 3af6db817..11a4d38a3 100644 --- a/installerbuilder/libinstaller/packagemanagercore_p.cpp +++ b/installerbuilder/libinstaller/packagemanagercore_p.cpp @@ -2035,15 +2035,25 @@ bool PackageManagerCorePrivate::fetchMetaInformationFromRepositories() } if (m_repoMetaInfoJob->isCanceled() || m_repoMetaInfoJob->error() != KDJob::NoError) { - if (m_repoMetaInfoJob->error() != QInstaller::UserIgnoreError) { - setStatus(PackageManagerCore::Failure, m_repoMetaInfoJob->errorString()); - return m_repoFetched; + switch (m_repoMetaInfoJob->error()) { + case QInstaller::UserIgnoreError: + break; // we can simply ignore this error, the user knows about it + + case QInstaller::RepositoryUpdatesReceived: + if (m_settings.updateDefaultRepositories(m_repoMetaInfoJob->repositoryUpdates()) + == Settings::UpdatesApplied) { + fetchMetaInformationFromRepositories(); // start over, we might have complete new repos + return m_repoFetched; + } + break; + + default: + setStatus(PackageManagerCore::Failure, m_repoMetaInfoJob->errorString()); + return m_repoFetched; } } m_repoFetched = true; - m_settings.updateRepositories(m_repoMetaInfoJob->redirects()); - return m_repoFetched; } |