walletdb: lock during rescan.

This commit is contained in:
Christopher Jeffrey 2016-08-22 18:00:38 -07:00
parent aec3548b26
commit 52f00c8fe2
No known key found for this signature in database
GPG Key ID: 8962AB9DE6666BBD
2 changed files with 9 additions and 7 deletions

View File

@ -1372,9 +1372,6 @@ ChainDB.prototype.scan = function scan(start, filter, iter, callback) {
}
}
if (txs.length === 0)
return self.getNextHash(entry.hash, next);
iter(entry, txs, function(err) {
if (err)
return next(err);

View File

@ -1135,7 +1135,12 @@ WalletDB.prototype.rescan = function rescan(chaindb, height, callback) {
}
if (height == null)
height = self.height;
height = this.height;
callback = this._lockTX(rescan, [chaindb, height, callback]);
if (!callback)
return;
this.getAddressHashes(function(err, hashes) {
if (err)
@ -1144,7 +1149,7 @@ WalletDB.prototype.rescan = function rescan(chaindb, height, callback) {
self.logger.info('Scanning for %d addresses.', hashes.length);
chaindb.scan(height, hashes, function(block, txs, next) {
self.addBlock(block, txs, next);
self.addBlock(block, txs, next, true);
}, callback);
});
};
@ -1395,11 +1400,11 @@ WalletDB.prototype.getWalletsByTX = function getWalletsByTX(hash, callback) {
* @param {Function} callback
*/
WalletDB.prototype.addBlock = function addBlock(entry, txs, callback) {
WalletDB.prototype.addBlock = function addBlock(entry, txs, callback, force) {
var self = this;
var block, matches, hash;
callback = this._lockTX(addBlock, [entry, txs, callback]);
callback = this._lockTX(addBlock, [entry, txs, callback], force);
if (!callback)
return;