diff --git a/lib/bcoin/pool.js b/lib/bcoin/pool.js index ca0067c2..8c5fd119 100644 --- a/lib/bcoin/pool.js +++ b/lib/bcoin/pool.js @@ -354,28 +354,31 @@ Pool.prototype._addPeer = function _addPeer(backoff) { backoff = 0; - var len = self.chain.index.hashes.length; - var hash = block.hash('hex'); - self._response(block); + var hash = block.hash('hex'); + var len = self.chain.index.hashes.length; + var orphan = self.chain.hasOrphan(block); + var err = self.chain.add(block); if (err) self.emit('chain-error', err, peer); - if (self.chain.hasOrphan(block)) - peer.loadBlocks(self.chain.locatorHashes(), self.chain.getOrphanRoot(block)); - self.emit('_block', block, peer); + if (self.chain.hasOrphan(block)) { + peer.loadBlocks(self.chain.locatorHashes(), self.chain.getOrphanRoot(block)); + if (!orphan) + self.emit('orphan', block, peer); + return; + } + if (self.chain.index.hashes.length === len) return; var top = self.chain.index.hashes[self.chain.index.hashes.length - 1]; - if (top === self.bestBlock) - self.needSync = false; - else - self.needSync = true; + + self.needSync = top !== self.bestBlock; self.emit('chain-progress', self.chain.fillPercent(), peer); self.emit('block', block, peer);