diff --git a/lib/bcoin/peer.js b/lib/bcoin/peer.js index c788d831..d8f57a20 100644 --- a/lib/bcoin/peer.js +++ b/lib/bcoin/peer.js @@ -1148,15 +1148,27 @@ Peer.prototype._handleMempool = function _handleMempool() { var items = []; var i; - if (!this.mempool) + var unlock = this.locker.lock(_handleMempool, []); + if (!unlock) return; + function done(err) { + if (err) { + self.emit('error', err); + return unlock(); + } + unlock(); + } + + if (!this.mempool) + return done(); + if (this.pool.options.selfish) - return; + return done(); this.mempool.getSnapshot(function(err, hashes) { if (err) - return self.emit('error', err); + return done(err); for (i = 0; i < hashes.length; i++) items.push({ type: constants.inv.TX, hash: hashes[i] }); @@ -1164,6 +1176,7 @@ Peer.prototype._handleMempool = function _handleMempool() { bcoin.debug('Sending mempool snapshot (%s).', self.hostname); self.sendInv(items); + done(); }); };