From dfe79060a62c8de098e75d527d97b99c3b10de50 Mon Sep 17 00:00:00 2001 From: Matt Corallo Date: Fri, 21 Oct 2016 12:15:19 -0400 Subject: [PATCH] Add missing cs_main lock to ::GETBLOCKTXN processing Note that this is not a major issue as, in order for the missing lock to cause issues, you have to receive a GETBLOCKTXN message while reindexing, adding a block header via RPC, etc, which results in either a table rehash or an insert into the bucket which you are currently looking at. --- src/main.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main.cpp b/src/main.cpp index df4f5e395..37daa08da 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -5442,6 +5442,8 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv, BlockTransactionsRequest req; vRecv >> req; + LOCK(cs_main); + BlockMap::iterator it = mapBlockIndex.find(req.blockhash); if (it == mapBlockIndex.end() || !(it->second->nStatus & BLOCK_HAVE_DATA)) { LogPrintf("Peer %d sent us a getblocktxn for a block we don't have", pfrom->id);