mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-11-13 07:28:59 +01:00
Merge #9516: Bug-fix: listsinceblock: use fork point as reference for blocks in reorg'd chains
7ba0a00Testing: listsinceblock should not use orphan block height. (Karl-Johan Alm)ee5c1ceBug-fix: listsinceblock: use closest common ancestor when a block hash was provided for a chain that was not the main chain. (Karl-Johan Alm)
This commit is contained in:
@@ -1681,7 +1681,7 @@ UniValue listsinceblock(const JSONRPCRequest& request)
|
||||
|
||||
LOCK2(cs_main, pwalletMain->cs_wallet);
|
||||
|
||||
CBlockIndex *pindex = NULL;
|
||||
const CBlockIndex *pindex = NULL;
|
||||
int target_confirms = 1;
|
||||
isminefilter filter = ISMINE_SPENDABLE;
|
||||
|
||||
@@ -1692,7 +1692,16 @@ UniValue listsinceblock(const JSONRPCRequest& request)
|
||||
blockId.SetHex(request.params[0].get_str());
|
||||
BlockMap::iterator it = mapBlockIndex.find(blockId);
|
||||
if (it != mapBlockIndex.end())
|
||||
{
|
||||
pindex = it->second;
|
||||
if (chainActive[pindex->nHeight] != pindex)
|
||||
{
|
||||
// the block being asked for is a part of a deactivated chain;
|
||||
// we don't want to depend on its perceived height in the block
|
||||
// chain, we want to instead use the last common ancestor
|
||||
pindex = chainActive.FindFork(pindex);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (request.params.size() > 1)
|
||||
@@ -1703,9 +1712,10 @@ UniValue listsinceblock(const JSONRPCRequest& request)
|
||||
throw JSONRPCError(RPC_INVALID_PARAMETER, "Invalid parameter");
|
||||
}
|
||||
|
||||
if(request.params.size() > 2)
|
||||
if(request.params[2].get_bool())
|
||||
filter = filter | ISMINE_WATCH_ONLY;
|
||||
if (request.params.size() > 2 && request.params[2].get_bool())
|
||||
{
|
||||
filter = filter | ISMINE_WATCH_ONLY;
|
||||
}
|
||||
|
||||
int depth = pindex ? (1 + chainActive.Height() - pindex->nHeight) : -1;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user