aboutsummaryrefslogtreecommitdiff
path: root/main.cpp
diff options
context:
space:
mode:
authorPieter Wuille <[email protected]>2011-04-13 16:16:30 +0200
committerGavin Andresen <[email protected]>2011-04-18 17:37:47 -0400
commit6a76c60e6c4c21c6355c5580f9f770fcc9f978ef (patch)
treeba3522df13633aeedf795b1bf967aa4f627ab584 /main.cpp
parentMerge branch 'upnpfix' of https://github.com/TheBlueMatt/bitcoin (diff)
downloaddiscoin-6a76c60e6c4c21c6355c5580f9f770fcc9f978ef.tar.xz
discoin-6a76c60e6c4c21c6355c5580f9f770fcc9f978ef.zip
Automatically rescan after restoring wallet.dat
Information about the best known chain is added to wallet.dat. If this information does not match the data in blkindex.dat, a rescan is automatically performed, starting from the the last known block. When upgrading from a wallet which does not have this information, no rescan is done automatically.
Diffstat (limited to 'main.cpp')
-rw-r--r--main.cpp9
1 files changed, 9 insertions, 0 deletions
diff --git a/main.cpp b/main.cpp
index 67db0bce8..1b15d7e07 100644
--- a/main.cpp
+++ b/main.cpp
@@ -1611,6 +1611,15 @@ bool CBlock::SetBestChain(CTxDB& txdb, CBlockIndex* pindexNew)
}
}
+ // Update best block in wallet (so we can detect restored wallets)
+ if (!IsInitialBlockDownload())
+ {
+ CWalletDB walletdb;
+ const CBlockLocator locator(pindexNew);
+ if (!walletdb.WriteBestBlock(locator))
+ return error("SetBestChain() : WriteWalletBest failed");
+ }
+
// New best block
hashBestChain = hash;
pindexBest = pindexNew;