diff options
Diffstat (limited to 'apt-pkg/acquire-item.cc')
| -rw-r--r-- | apt-pkg/acquire-item.cc | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/apt-pkg/acquire-item.cc b/apt-pkg/acquire-item.cc index 21ed7b242..b77bccc9d 100644 --- a/apt-pkg/acquire-item.cc +++ b/apt-pkg/acquire-item.cc @@ -870,6 +870,10 @@ std::string pkgAcquire::Item::ShortDesc() const /*{{{*/ return DescURI(); } /*}}}*/ +void pkgAcquire::Item::Cancelled() /*{{{*/ +{ +} + /*}}}*/ void pkgAcquire::Item::Finished() /*{{{*/ { } @@ -1334,7 +1338,7 @@ void pkgAcqMetaBase::CommitTransaction() switch (TransactionManager->State) { case TransactionStarted: break; - case TransactionAbort: _error->Fatal("Transaction %s was already committed and is now aborted", TransactionManager->Target.URI.c_str()); return; + case TransactionAbort: _error->Fatal("Transaction %s was already aborted and is now committed", TransactionManager->Target.URI.c_str()); return; case TransactionCommit: _error->Fatal("Transaction %s was already committed and is again committed", TransactionManager->Target.URI.c_str()); return; } TransactionManager->State = TransactionCommit; @@ -1344,8 +1348,12 @@ void pkgAcqMetaBase::CommitTransaction() for (std::vector<pkgAcqTransactionItem*>::iterator I = Transaction.begin(); I != Transaction.end(); ++I) { - (*I)->TransactionState(TransactionCommit); + if (*I != this) + (*I)->TransactionState(TransactionCommit); } + // commit ourselves last to not end up with fresh InRelease + // that doesn't match other files when killed mid-commit + TransactionState(TransactionCommit); Transaction.clear(); } /*}}}*/ @@ -2006,6 +2014,12 @@ string pkgAcqMetaClearSig::Custom600Headers() const return Header; } /*}}}*/ +void pkgAcqMetaClearSig::Cancelled() /*{{{*/ +{ + if (TransactionManager->State == TransactionStarted) + TransactionManager->AbortTransaction(); +} + /*}}}*/ void pkgAcqMetaClearSig::Finished() /*{{{*/ { if(_config->FindB("Debug::Acquire::Transaction", false) == true) |
