diff options
| -rw-r--r-- | apt-pkg/acquire.cc | 6 | ||||
| -rwxr-xr-x | test/integration/test-ubuntu-bug-2003851-retry-after | 29 |
2 files changed, 32 insertions, 3 deletions
diff --git a/apt-pkg/acquire.cc b/apt-pkg/acquire.cc index 41c3d9904..d2d32e52e 100644 --- a/apt-pkg/acquire.cc +++ b/apt-pkg/acquire.cc @@ -1031,7 +1031,7 @@ bool pkgAcquire::Queue::Enqueue(ItemDesc &Item) }; QItem **OptimalI = &Items; QItem **I = &Items; - auto insertLocation = std::make_tuple(Item.Owner->FetchAfter(), -Item.Owner->Priority()); + auto insertLocation = std::make_tuple(Item.Owner->FetchAfter(), Item.Owner->Priority()); // move to the end of the queue and check for duplicates here for (; *I != 0; ) { if (Item.URI == (*I)->URI && MetaKeysMatch(Item, *I)) @@ -1045,10 +1045,10 @@ bool pkgAcquire::Queue::Enqueue(ItemDesc &Item) // Determine the optimal position to insert: before anything with a // higher priority. auto queueLocation = std::make_tuple((*I)->GetFetchAfter(), - -(*I)->GetPriority()); + (*I)->GetPriority()); I = &(*I)->Next; - if (queueLocation <= insertLocation) + if (queueLocation >= insertLocation) { OptimalI = I; } diff --git a/test/integration/test-ubuntu-bug-2003851-retry-after b/test/integration/test-ubuntu-bug-2003851-retry-after new file mode 100755 index 000000000..492dc2781 --- /dev/null +++ b/test/integration/test-ubuntu-bug-2003851-retry-after @@ -0,0 +1,29 @@ +#!/bin/sh +set -e + +TESTDIR="$(readlink -f "$(dirname "$0")")" +. "$TESTDIR/framework" + +setupenvironment +configarchitecture 'amd64' + +insertpackage 'jammy,jammy-updates' 'testpkg' 'all' '1' + +setupaptarchive --no-update +changetowebserver + +webserverconfig 'aptwebserver::failrequest' '503' +webserverconfig 'aptwebserver::failrequest::dists/jammy/InRelease' '4' +testwarningequal "Delaying http://localhost:${APTHTTPPORT} jammy InRelease by 1 seconds +Ign:1 http://localhost:${APTHTTPPORT} jammy InRelease + 503 Service Unavailable +Get:2 http://localhost:${APTHTTPPORT} jammy-updates InRelease [1398 B] +Err:1 http://localhost:${APTHTTPPORT} jammy InRelease + 503 Service Unavailable +Get:3 http://localhost:${APTHTTPPORT} jammy-updates/main all Packages [257 B] +Get:4 http://localhost:${APTHTTPPORT} jammy-updates/main Translation-en [235 B] +Reading package lists... +Building dependency tree... +All packages are up to date. +W: Failed to fetch http://localhost:${APTHTTPPORT}/dists/jammy/InRelease 503 Service Unavailable +W: Some index files failed to download. They have been ignored, or old ones used instead." apt update -o acquire::retries=1 -o debug::acquire::retries=1 |
