aboutsummaryrefslogtreecommitdiff
path: root/src/index
diff options
context:
space:
mode:
authorWladimir J. van der Laan <laanwj@gmail.com>2019-01-09 14:47:40 +0100
committerWladimir J. van der Laan <laanwj@gmail.com>2019-01-09 14:48:11 +0100
commite12a480e40753655124acc15fe4ebfe7bcb3ab99 (patch)
treea785c765a774cb5a25fb2de5de8ffab58a8de522 /src/index
parentfdbe7f41c02847276e980724e49865daf7951214 (diff)
parented12d5df1ba52b5ef3dd3799de26bb5e1d3fc654 (diff)
downloadbitcoin-e12a480e40753655124acc15fe4ebfe7bcb3ab99.tar.xz
Merge #14085: index: Fix for indexers skipping genesis block.
ed12d5df1ba52b5ef3dd3799de26bb5e1d3fc654 index: Fix for indexers skipping genesis block. (Jim Posen) Pull request description: This fixes a bug where indexers would skip processing of the genesis block. Preserves the current behavior of omitting genesis block transaction from the index. Tree-SHA512: 092fd3d629bf1ef279566217c668cc913a8b8e012d811d0e544231894c49a0c0c179537ac4727c39b9bf407479541745d79c4e118db6f0795a2b848d0fe62cbf
Diffstat (limited to 'src/index')
-rw-r--r--src/index/base.cpp6
-rw-r--r--src/index/txindex.cpp3
2 files changed, 8 insertions, 1 deletions
diff --git a/src/index/base.cpp b/src/index/base.cpp
index 4d4a7e1502..f6f59572ce 100644
--- a/src/index/base.cpp
+++ b/src/index/base.cpp
@@ -60,7 +60,11 @@ bool BaseIndex::Init()
}
LOCK(cs_main);
- m_best_block_index = FindForkInGlobalIndex(chainActive, locator);
+ if (locator.IsNull()) {
+ m_best_block_index = nullptr;
+ } else {
+ m_best_block_index = FindForkInGlobalIndex(chainActive, locator);
+ }
m_synced = m_best_block_index.load() == chainActive.Tip();
return true;
}
diff --git a/src/index/txindex.cpp b/src/index/txindex.cpp
index ba1c44765f..10bc8419dd 100644
--- a/src/index/txindex.cpp
+++ b/src/index/txindex.cpp
@@ -245,6 +245,9 @@ bool TxIndex::Init()
bool TxIndex::WriteBlock(const CBlock& block, const CBlockIndex* pindex)
{
+ // Exclude genesis block transaction because outputs are not spendable.
+ if (pindex->nHeight == 0) return true;
+
CDiskTxPos pos(pindex->GetBlockPos(), GetSizeOfCompactSize(block.vtx.size()));
std::vector<std::pair<uint256, CDiskTxPos>> vPos;
vPos.reserve(block.vtx.size());