aboutsummaryrefslogtreecommitdiff
path: root/src/validation.cpp
diff options
context:
space:
mode:
authorJonas Schnelli <dev@jonasschnelli.ch>2017-12-13 11:06:51 -1000
committerJonas Schnelli <dev@jonasschnelli.ch>2018-01-23 20:24:53 -1000
commitccd8ef65f93ed82a87cee634660bed3ac17d9eb5 (patch)
tree41ec340b182e8711b7b47a76e126f4a003396fc1 /src/validation.cpp
parentbc356b4268e222ac57d9e9297d2a986bb6e09de8 (diff)
Reduce cs_main lock in ReadBlockFromDisk, only read GetBlockPos under the lock
Diffstat (limited to 'src/validation.cpp')
-rw-r--r--src/validation.cpp8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/validation.cpp b/src/validation.cpp
index 14d60bb269..8cee0dfac3 100644
--- a/src/validation.cpp
+++ b/src/validation.cpp
@@ -1121,7 +1121,13 @@ bool ReadBlockFromDisk(CBlock& block, const CDiskBlockPos& pos, const Consensus:
bool ReadBlockFromDisk(CBlock& block, const CBlockIndex* pindex, const Consensus::Params& consensusParams)
{
- if (!ReadBlockFromDisk(block, pindex->GetBlockPos(), consensusParams))
+ CDiskBlockPos blockPos;
+ {
+ LOCK(cs_main);
+ blockPos = pindex->GetBlockPos();
+ }
+
+ if (!ReadBlockFromDisk(block, blockPos, consensusParams))
return false;
if (block.GetHash() != pindex->GetBlockHash())
return error("ReadBlockFromDisk(CBlock&, CBlockIndex*): GetHash() doesn't match index for %s at %s",