From e52eebd652ebcfaaa1fd87ff057724115f1ddd28 Mon Sep 17 00:00:00 2001 From: Christopher Jeffrey Date: Sun, 5 Mar 2017 13:01:30 -0800 Subject: [PATCH] fullnode: fix persistent mempool block addition/removal. --- lib/mempool/mempool.js | 10 ++++++++++ lib/node/fullnode.js | 20 ++++++++------------ 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/lib/mempool/mempool.js b/lib/mempool/mempool.js index a1d8c899..05b02855 100644 --- a/lib/mempool/mempool.js +++ b/lib/mempool/mempool.js @@ -199,6 +199,11 @@ Mempool.prototype._addBlock = co(function* addBlock(block, txs) { var entries = []; var i, entry, tx, hash; + if (this.totalTX === 0) { + this.tip = block.hash; + return; + } + for (i = txs.length - 1; i >= 1; i--) { tx = txs[i]; hash = tx.hash('hex'); @@ -273,6 +278,11 @@ Mempool.prototype._removeBlock = co(function* removeBlock(block, txs) { var total = 0; var i, tx, hash; + if (this.totalTX === 0) { + this.tip = block.prevBlock; + return; + } + for (i = 1; i < txs.length; i++) { tx = txs[i]; hash = tx.hash('hex'); diff --git a/lib/node/fullnode.js b/lib/node/fullnode.js index 6f19b836..8e805487 100644 --- a/lib/node/fullnode.js +++ b/lib/node/fullnode.js @@ -188,24 +188,20 @@ FullNode.prototype._init = function _init() { }); this.chain.on('connect', co(function* (entry, block) { - if (self.chain.synced) { - try { - yield self.mempool.addBlock(entry, block.txs); - } catch (e) { - self.error(e); - } + try { + yield self.mempool.addBlock(entry, block.txs); + } catch (e) { + self.error(e); } self.emit('block', block); self.emit('connect', entry, block); })); this.chain.on('disconnect', co(function* (entry, block) { - if (self.chain.synced) { - try { - yield self.mempool.removeBlock(entry, block.txs); - } catch (e) { - self.error(e); - } + try { + yield self.mempool.removeBlock(entry, block.txs); + } catch (e) { + self.error(e); } self.emit('disconnect', entry, block); }));