|
@@ -443,7 +443,13 @@ bool pkgAcquire::Worker::RunMessages()
|
|
|
{
|
|
{
|
|
|
if (isDoomedItem(Owner) == false)
|
|
if (isDoomedItem(Owner) == false)
|
|
|
{
|
|
{
|
|
|
- Message.append("\nFailReason: HashSumMismatch");
|
|
|
|
|
|
|
+ if (Message.find("\nFailReason:") == std::string::npos)
|
|
|
|
|
+ {
|
|
|
|
|
+ if (ReceivedHashes != ExpectedHashes)
|
|
|
|
|
+ Message.append("\nFailReason: HashSumMismatch");
|
|
|
|
|
+ else
|
|
|
|
|
+ Message.append("\nFailReason: WeakHashSums");
|
|
|
|
|
+ }
|
|
|
Owner->Failed(Message,Config);
|
|
Owner->Failed(Message,Config);
|
|
|
}
|
|
}
|
|
|
if (Log != nullptr)
|
|
if (Log != nullptr)
|
|
@@ -484,7 +490,7 @@ bool pkgAcquire::Worker::RunMessages()
|
|
|
}
|
|
}
|
|
|
if (errTransient == false)
|
|
if (errTransient == false)
|
|
|
{
|
|
{
|
|
|
- auto const reasons = { "HashSumMismatch", "MaximumSizeExceeded" };
|
|
|
|
|
|
|
+ auto const reasons = { "HashSumMismatch", "WeakHashSums", "MaximumSizeExceeded" };
|
|
|
errAuthErr = std::find(std::begin(reasons), std::end(reasons), failReason) != std::end(reasons);
|
|
errAuthErr = std::find(std::begin(reasons), std::end(reasons), failReason) != std::end(reasons);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
@@ -631,12 +637,36 @@ bool pkgAcquire::Worker::QueueItem(pkgAcquire::Queue::QItem *Item)
|
|
|
if (OutFd == -1)
|
|
if (OutFd == -1)
|
|
|
return false;
|
|
return false;
|
|
|
|
|
|
|
|
|
|
+ HashStringList const hsl = Item->GetExpectedHashes();
|
|
|
|
|
+
|
|
|
|
|
+ if (isDoomedItem(Item->Owner))
|
|
|
|
|
+ return true;
|
|
|
|
|
+
|
|
|
|
|
+ if (hsl.usable() == false && Item->Owner->HashesRequired() &&
|
|
|
|
|
+ _config->Exists("Acquire::ForceHash") == false)
|
|
|
|
|
+ {
|
|
|
|
|
+ std::string const Message = "400 URI Failure"
|
|
|
|
|
+ "\nURI: " + Item->URI +
|
|
|
|
|
+ "\nFilename: " + Item->Owner->DestFile +
|
|
|
|
|
+ "\nFailReason: WeakHashSums";
|
|
|
|
|
+
|
|
|
|
|
+ auto const ItmOwners = Item->Owners;
|
|
|
|
|
+ for (auto &O: ItmOwners)
|
|
|
|
|
+ {
|
|
|
|
|
+ O->Status = pkgAcquire::Item::StatAuthError;
|
|
|
|
|
+ O->Failed(Message, Config);
|
|
|
|
|
+ if (Log != nullptr)
|
|
|
|
|
+ Log->Fail(O->GetItemDesc());
|
|
|
|
|
+ }
|
|
|
|
|
+ // "queued" successfully, the item just instantly failed
|
|
|
|
|
+ return true;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
string Message = "600 URI Acquire\n";
|
|
string Message = "600 URI Acquire\n";
|
|
|
Message.reserve(300);
|
|
Message.reserve(300);
|
|
|
Message += "URI: " + Item->URI;
|
|
Message += "URI: " + Item->URI;
|
|
|
Message += "\nFilename: " + Item->Owner->DestFile;
|
|
Message += "\nFilename: " + Item->Owner->DestFile;
|
|
|
|
|
|
|
|
- HashStringList const hsl = Item->GetExpectedHashes();
|
|
|
|
|
for (HashStringList::const_iterator hs = hsl.begin(); hs != hsl.end(); ++hs)
|
|
for (HashStringList::const_iterator hs = hsl.begin(); hs != hsl.end(); ++hs)
|
|
|
Message += "\nExpected-" + hs->HashType() + ": " + hs->HashValue();
|
|
Message += "\nExpected-" + hs->HashType() + ": " + hs->HashValue();
|
|
|
|
|
|