diff options
-rw-r--r-- | src/rest.cpp | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/src/rest.cpp b/src/rest.cpp index 89075887a0..9a8793a517 100644 --- a/src/rest.cpp +++ b/src/rest.cpp @@ -11,6 +11,7 @@ #include "core/transaction.h" #include "version.h" #include "main.h" +#include "sync.h" using namespace std; using namespace json_spirit; @@ -80,13 +81,17 @@ static bool rest_block(AcceptedConnection *conn, if (!ParseHashStr(hashStr, hash)) throw RESTERR(HTTP_BAD_REQUEST, "Invalid hash: " + hashStr); - if (mapBlockIndex.count(hash) == 0) - throw RESTERR(HTTP_NOT_FOUND, hashStr + " not found"); - CBlock block; - CBlockIndex* pblockindex = mapBlockIndex[hash]; - if (!ReadBlockFromDisk(block, pblockindex)) - throw RESTERR(HTTP_NOT_FOUND, hashStr + " not found"); + CBlockIndex* pblockindex = NULL; + { + LOCK(cs_main); + if (mapBlockIndex.count(hash) == 0) + throw RESTERR(HTTP_NOT_FOUND, hashStr + " not found"); + + pblockindex = mapBlockIndex[hash]; + if (!ReadBlockFromDisk(block, pblockindex)) + throw RESTERR(HTTP_NOT_FOUND, hashStr + " not found"); + } CDataStream ssBlock(SER_NETWORK, PROTOCOL_VERSION); ssBlock << block; |