-
- if (m_install_status)
- {
- m_install_status->now = m_transfer_status->dlnow;
- m_install_status->total = m_transfer_status->dltotal;
-
- if (m_transfer_status->status != TransferStatus::RUNNING)
- {
- if (m_transfer_status->status != TransferStatus::COMPLETED)
- {
- log_warning << "Some error" << std::endl;
- }
- else
- {
- Addon& repository_addon = get_repository_addon(m_install_request->addon_id);
-
- MD5 md5 = md5_from_file(m_install_request->install_filename);
- if (repository_addon.get_md5() != md5.hex_digest())
- {
- if (PHYSFS_delete(m_install_request->install_filename.c_str()) == 0)
- {
- log_warning << "PHYSFS_delete failed: " << PHYSFS_getLastError() << std::endl;
- }
-
- throw std::runtime_error("Downloading Add-on failed: MD5 checksums differ");
- }
- else
- {
- const char* realdir = PHYSFS_getRealDir(m_install_request->install_filename.c_str());
- if (!realdir)
- {
- throw std::runtime_error("PHYSFS_getRealDir failed: " + m_install_request->install_filename);
- }
- else
- {
- add_installed_archive(m_install_request->install_filename, md5.hex_digest());
- }
- }
- }
-
- m_install_request = {};
- m_install_status = {};
- m_transfer_status = {};
- }
- }
-}
-
-void
-AddonManager::abort_install()
-{
- log_info << "addon install aborted" << std::endl;
-
- m_downloader.abort(m_transfer_status->id);
-
- m_install_request = {};
- m_install_status = {};
- m_transfer_status = {};