summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Kalnischkies <david@kalnischkies.de>2016-08-24 21:49:34 +0200
committerDavid Kalnischkies <david@kalnischkies.de>2016-08-24 21:49:34 +0200
commit1044354995513348f4836772fe77068585091d6b (patch)
tree9184664633272cbacd343f12a92138a95ab3ae79
parent2e2865ae53a65c00dd55a892d5b48458f3110366 (diff)
improve code & doc for aquire weak/loop failing
Improve-Upon: 2e2865ae53a65c00dd55a892d5b48458f3110366 Reported-By: Julian Andres Klode Gbp-Dch: Ignore
-rw-r--r--apt-pkg/acquire.cc12
1 files changed, 6 insertions, 6 deletions
diff --git a/apt-pkg/acquire.cc b/apt-pkg/acquire.cc
index affc0c791..e588b0306 100644
--- a/apt-pkg/acquire.cc
+++ b/apt-pkg/acquire.cc
@@ -269,7 +269,7 @@ void pkgAcquire::Remove(Worker *Work)
it is constructed which creates a queue (based on the current queue
mode) and puts the item in that queue. If the system is running then
the queue might be started. */
-static bool DoesAcquireResultInInstantFailure(pkgAcquire::Item * const Item,
+static bool CheckForBadItemAndFailIt(pkgAcquire::Item * const Item,
pkgAcquire::MethodConfig const * const Config, pkgAcquireStatus * const Log)
{
auto SavedDesc = Item->GetItemDesc();
@@ -317,7 +317,7 @@ void pkgAcquire::Enqueue(ItemDesc &Item)
in logging before we actually have started, which would
be easier to implement but would confuse users/implementations
so we check the items skipped here in #Startup */
- if (Running && DoesAcquireResultInInstantFailure(Item.Owner, Config, Log))
+ if (Running && CheckForBadItemAndFailIt(Item.Owner, Config, Log))
return;
// Find the queue structure
@@ -962,11 +962,11 @@ bool pkgAcquire::Queue::Startup()
// now-running twin of the pkgAcquire::Enqueue call
for (QItem *I = Items; I != 0; )
{
- bool pointless = false;
+ auto const INext = I->Next;
for (auto &&O: I->Owners)
- if (DoesAcquireResultInInstantFailure(O, Cnf, Owner->Log))
- pointless = true;
- I = pointless ? Items : I->Next;
+ CheckForBadItemAndFailIt(O, Cnf, Owner->Log);
+ // if an item failed, it will be auto-dequeued invalidation our I here
+ I = INext;
}
Workers = new Worker(this,Cnf,Owner->Log);