|
|
@ -7,6 +7,7 @@ |
|
|
|
#include "db.h" |
|
|
|
#include "db.h" |
|
|
|
#include "net.h" |
|
|
|
#include "net.h" |
|
|
|
#include "init.h" |
|
|
|
#include "init.h" |
|
|
|
|
|
|
|
#include <boost/algorithm/string/replace.hpp> |
|
|
|
#include <boost/filesystem.hpp> |
|
|
|
#include <boost/filesystem.hpp> |
|
|
|
#include <boost/filesystem/fstream.hpp> |
|
|
|
#include <boost/filesystem/fstream.hpp> |
|
|
|
|
|
|
|
|
|
|
@ -1278,6 +1279,14 @@ bool static Reorganize(CTxDB& txdb, CBlockIndex* pindexNew) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
static void |
|
|
|
|
|
|
|
runCommand(std::string strCommand) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
int nErr = ::system(strCommand.c_str()); |
|
|
|
|
|
|
|
if (nErr) |
|
|
|
|
|
|
|
printf("runCommand error: system(%s) returned %d\n", strCommand.c_str(), nErr); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
bool CBlock::SetBestChain(CTxDB& txdb, CBlockIndex* pindexNew) |
|
|
|
bool CBlock::SetBestChain(CTxDB& txdb, CBlockIndex* pindexNew) |
|
|
|
{ |
|
|
|
{ |
|
|
|
uint256 hash = GetHash(); |
|
|
|
uint256 hash = GetHash(); |
|
|
@ -1321,7 +1330,8 @@ bool CBlock::SetBestChain(CTxDB& txdb, CBlockIndex* pindexNew) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// Update best block in wallet (so we can detect restored wallets)
|
|
|
|
// Update best block in wallet (so we can detect restored wallets)
|
|
|
|
if (!IsInitialBlockDownload()) |
|
|
|
bool fIsInitialDownload = IsInitialBlockDownload(); |
|
|
|
|
|
|
|
if (!fIsInitialDownload) |
|
|
|
{ |
|
|
|
{ |
|
|
|
const CBlockLocator locator(pindexNew); |
|
|
|
const CBlockLocator locator(pindexNew); |
|
|
|
::SetBestChain(locator); |
|
|
|
::SetBestChain(locator); |
|
|
@ -1336,6 +1346,14 @@ bool CBlock::SetBestChain(CTxDB& txdb, CBlockIndex* pindexNew) |
|
|
|
nTransactionsUpdated++; |
|
|
|
nTransactionsUpdated++; |
|
|
|
printf("SetBestChain: new best=%s height=%d work=%s\n", hashBestChain.ToString().substr(0,20).c_str(), nBestHeight, bnBestChainWork.ToString().c_str()); |
|
|
|
printf("SetBestChain: new best=%s height=%d work=%s\n", hashBestChain.ToString().substr(0,20).c_str(), nBestHeight, bnBestChainWork.ToString().c_str()); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
std::string strCmd = GetArg("-blocknotify", ""); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (!fIsInitialDownload && !strCmd.empty()) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
boost::replace_all(strCmd, "%s", hashBestChain.GetHex()); |
|
|
|
|
|
|
|
boost::thread t(runCommand, strCmd); // thread runs free
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
return true; |
|
|
|
return true; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|