mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-03-25 23:16:16 +01:00
wallet: Disallow abandon of conflicted txes
This commit is contained in:
@@ -2190,14 +2190,14 @@ UniValue abandontransaction(const JSONRPCRequest& request)
|
||||
return NullUniValue;
|
||||
}
|
||||
|
||||
if (request.fHelp || request.params.size() != 1)
|
||||
if (request.fHelp || request.params.size() != 1) {
|
||||
throw std::runtime_error(
|
||||
"abandontransaction \"txid\"\n"
|
||||
"\nMark in-wallet transaction <txid> as abandoned\n"
|
||||
"This will mark this transaction and all its in-wallet descendants as abandoned which will allow\n"
|
||||
"for their inputs to be respent. It can be used to replace \"stuck\" or evicted transactions.\n"
|
||||
"It only works on transactions which are not included in a block and are not currently in the mempool.\n"
|
||||
"It has no effect on transactions which are already conflicted or abandoned.\n"
|
||||
"It has no effect on transactions which are already abandoned.\n"
|
||||
"\nArguments:\n"
|
||||
"1. \"txid\" (string, required) The transaction id\n"
|
||||
"\nResult:\n"
|
||||
@@ -2205,6 +2205,7 @@ UniValue abandontransaction(const JSONRPCRequest& request)
|
||||
+ HelpExampleCli("abandontransaction", "\"1075db55d416d3ca199f55b6084e2115b9345e16c5cf302fc80e9d5fbf5d48d\"")
|
||||
+ HelpExampleRpc("abandontransaction", "\"1075db55d416d3ca199f55b6084e2115b9345e16c5cf302fc80e9d5fbf5d48d\"")
|
||||
);
|
||||
}
|
||||
|
||||
ObserveSafeMode();
|
||||
|
||||
|
||||
@@ -1083,7 +1083,7 @@ bool CWallet::TransactionCanBeAbandoned(const uint256& hashTx) const
|
||||
{
|
||||
LOCK2(cs_main, cs_wallet);
|
||||
const CWalletTx* wtx = GetWalletTx(hashTx);
|
||||
return wtx && !wtx->isAbandoned() && wtx->GetDepthInMainChain() <= 0 && !wtx->InMempool();
|
||||
return wtx && !wtx->isAbandoned() && wtx->GetDepthInMainChain() == 0 && !wtx->InMempool();
|
||||
}
|
||||
|
||||
bool CWallet::AbandonTransaction(const uint256& hashTx)
|
||||
@@ -1099,7 +1099,7 @@ bool CWallet::AbandonTransaction(const uint256& hashTx)
|
||||
auto it = mapWallet.find(hashTx);
|
||||
assert(it != mapWallet.end());
|
||||
CWalletTx& origtx = it->second;
|
||||
if (origtx.GetDepthInMainChain() > 0 || origtx.InMempool()) {
|
||||
if (origtx.GetDepthInMainChain() != 0 || origtx.InMempool()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user