From dcc690d7e08f6d54fc10ee372510875a41ec9a3b Mon Sep 17 00:00:00 2001 From: Sebastian Krzyszkowiak Date: Thu, 19 Mar 2026 20:13:55 +0100 Subject: pkgAcqMetaClearSig: Abort transaction when pkgAcquire::Run has been cancelled Ongoing Run can be cancelled by returning false from ::Pulse(). In this case the items would still be called pkgAcquire::Item::Finished() as usual, causing pkgAcqMetaClearSig to commit the incomplete transaction anyway as at that point it's still Started and has no errors. Add a pkgAcquire::Item::Cancelled() method and use it in pkgAcqMetaClearSig to abort the transaction. Closes: #1078608 --- apt-pkg/acquire.cc | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'apt-pkg/acquire.cc') diff --git a/apt-pkg/acquire.cc b/apt-pkg/acquire.cc index 95b6391cd..62d477f95 100644 --- a/apt-pkg/acquire.cc +++ b/apt-pkg/acquire.cc @@ -794,6 +794,10 @@ stop: for (Queue *I = Queues; I != 0; I = I->Next) I->Shutdown(false); + if (WasCancelled) + for (ItemIterator I = Items.begin(); I != Items.end(); ++I) + (*I)->Cancelled(); + // Shut down the items for (auto &Item : Items) Item->Finished(); -- cgit v1.2.3-70-g09d2