]> git.saurik.com Git - apt.git/blobdiff - apt-pkg/acquire-worker.cc
check internal redirections for loops, too
[apt.git] / apt-pkg / acquire-worker.cc
index aa1a2654e0a47a8e3d70c9eb09c483647e39cd59..a4fbc765157b4ee0f410b014a5ee28800ab11b76 100644 (file)
@@ -686,6 +686,25 @@ bool pkgAcquire::Worker::QueueItem(pkgAcquire::Queue::QItem *Item)
       return true;
    }
 
+   if (Item->Owner->IsRedirectionLoop(Item->URI))
+   {
+      std::string const Message = "400 URI Failure"
+        "\nURI: " + Item->URI +
+        "\nFilename: " + Item->Owner->DestFile +
+        "\nFailReason: RedirectionLoop";
+
+      auto const ItmOwners = Item->Owners;
+      for (auto &O: ItmOwners)
+      {
+        O->Status = pkgAcquire::Item::StatError;
+        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";
    Message.reserve(300);
    Message += "URI: " + Item->URI;