From c57c027aac9738b7b9dbb969fbcbc0362a5a7d20 Mon Sep 17 00:00:00 2001 From: LoRd_MuldeR Date: Mon, 17 Nov 2014 15:42:55 +0100 Subject: [PATCH] Do not attempt to download signature file, if download of update info failed already. --- src/Thread_CheckUpdate.cpp | 40 +++++++++++++++++++++++++------------- src/Thread_CheckUpdate.h | 1 + 2 files changed, 27 insertions(+), 14 deletions(-) diff --git a/src/Thread_CheckUpdate.cpp b/src/Thread_CheckUpdate.cpp index 5ffc4c35..5f5a4840 100644 --- a/src/Thread_CheckUpdate.cpp +++ b/src/Thread_CheckUpdate.cpp @@ -472,23 +472,17 @@ bool UpdateCheckThread::tryUpdateMirror(UpdateInfo *updateInfo, const QString &u bool success = false; log("", "Trying mirror:", url); - QString randPart = lamexp_rand_str(); - QString outFileVersionInfo = QString("%1/%2.ver").arg(lamexp_temp_folder2(), randPart); - QString outFileSignature = QString("%1/%2.sig").arg(lamexp_temp_folder2(), randPart); + const QString randPart = lamexp_rand_str(); + const QString outFileVers = QString("%1/%2.ver").arg(lamexp_temp_folder2(), randPart); + const QString outFileSign = QString("%1/%2.sig").arg(lamexp_temp_folder2(), randPart); - log("", "Downloading update info:"); - bool ok1 = getFile(QString("%1%2").arg(url, mirror_url_postfix[m_betaUpdates ? 1 : 0]), outFileVersionInfo); - - log("", "Downloading signature:"); - bool ok2 = getFile(QString("%1%2.sig").arg(url, mirror_url_postfix[m_betaUpdates ? 1 : 0]), outFileSignature); - - if(ok1 && ok2) + if(getUpdateInfo(url, outFileVers, outFileSign)) { log("", "Download okay, checking signature:"); - if(checkSignature(outFileVersionInfo, outFileSignature)) + if(checkSignature(outFileVers, outFileSign)) { log("", "Signature okay, parsing info:"); - success = parseVersionInfo(outFileVersionInfo, updateInfo); + success = parseVersionInfo(outFileVers, updateInfo); } else { @@ -500,12 +494,30 @@ bool UpdateCheckThread::tryUpdateMirror(UpdateInfo *updateInfo, const QString &u log("", "Download has failed!"); } - QFile::remove(outFileVersionInfo); - QFile::remove(outFileSignature); + QFile::remove(outFileVers); + QFile::remove(outFileSign); return success; } +bool UpdateCheckThread::getUpdateInfo(const QString &url, const QString &outFileVers, const QString &outFileSign) +{ + log("", "Downloading update info:"); + if(!getFile(QString("%1%2" ).arg(url, mirror_url_postfix[m_betaUpdates ? 1 : 0]), outFileVers)) + { + return false; + } + + log("", "Downloading signature:"); + if(!getFile(QString("%1%2.sig").arg(url, mirror_url_postfix[m_betaUpdates ? 1 : 0]), outFileSign)) + { + return false; + } + + return true; +} + + bool UpdateCheckThread::getFile(const QString &url, const QString &outFile, unsigned int maxRedir, bool *httpOk) { QFileInfo output(outFile); diff --git a/src/Thread_CheckUpdate.h b/src/Thread_CheckUpdate.h index 9e01661b..31c26d24 100644 --- a/src/Thread_CheckUpdate.h +++ b/src/Thread_CheckUpdate.h @@ -102,6 +102,7 @@ private: inline void log(const QString &str1, const QString &str2 = QString(), const QString &str3 = QString(), const QString &str4 = QString()); bool getFile(const QString &url, const QString &outFile, unsigned int maxRedir = 5, bool *httpOk = NULL); + bool getUpdateInfo(const QString &url, const QString &outFileVers, const QString &outFileSign); int tryContactHost(const QString &url); bool tryUpdateMirror(UpdateInfo *updateInfo, const QString &url); bool checkSignature(const QString &file, const QString &signature);