diff --git a/launcher/meta/BaseEntity.cpp b/launcher/meta/BaseEntity.cpp index d638fd8b9..1869e14d3 100644 --- a/launcher/meta/BaseEntity.cpp +++ b/launcher/meta/BaseEntity.cpp @@ -127,9 +127,11 @@ void BaseEntityLoadTask::executeTask() } // on online the hash needs to match - hashMatches = m_entity->m_sha256 == m_entity->m_file_sha256; + const auto& expected = m_entity->m_sha256; + const auto& actual = m_entity->m_file_sha256; + hashMatches = expected == actual; if (m_mode == Net::Mode::Online && !m_entity->m_sha256.isEmpty() && !hashMatches) { - throw Exception("mismatched checksum"); + throw Exception(QString("Checksum mismatch, expected sha256: %1, got: %2").arg(expected, actual)); } // load local file diff --git a/launcher/minecraft/Library.cpp b/launcher/minecraft/Library.cpp index 026f9c281..2b43d4389 100644 --- a/launcher/minecraft/Library.cpp +++ b/launcher/minecraft/Library.cpp @@ -149,7 +149,7 @@ QList Library::getDownloads(const RuntimeContext& runtimeC if (sha1.size()) { auto dl = Net::ApiDownload::makeCached(url, entry, options); dl->addValidator(new Net::ChecksumValidator(QCryptographicHash::Sha1, sha1)); - qDebug() << "Checksummed Download for:" << rawName().serialize() << "storage:" << storage << "url:" << url; + qDebug() << "Checksummed Download for:" << rawName().serialize() << "storage:" << storage << "url:" << url << "expected sha1:" << sha1; out.append(dl); } else { out.append(Net::ApiDownload::makeCached(url, entry, options)); diff --git a/launcher/net/ChecksumValidator.h b/launcher/net/ChecksumValidator.h index 7663d5d12..c7906cc13 100644 --- a/launcher/net/ChecksumValidator.h +++ b/launcher/net/ChecksumValidator.h @@ -38,7 +38,6 @@ #include "Validator.h" #include -#include namespace Net { class ChecksumValidator : public Validator { @@ -69,10 +68,10 @@ class ChecksumValidator : public Validator { return true; } - auto validate(QNetworkReply&) -> bool override + auto validate(QNetworkReply& reply) -> bool override { - if (m_expected.size() && m_expected != hash()) { - qWarning() << "Checksum mismatch, download is bad."; + if (!m_expected.isEmpty() && m_expected != hash()) { + qWarning() << "Checksum mismatch for URL:" << reply.url().toString() << "expected:" << m_expected << "got:" << hash(); return false; } return true;