diff --git a/lib/bcoin/peer.js b/lib/bcoin/peer.js index 5d4f7f28..d8c36f8d 100644 --- a/lib/bcoin/peer.js +++ b/lib/bcoin/peer.js @@ -365,6 +365,12 @@ Peer.prototype.sendInv = function sendInv(items) { inv.push(item); } + if (inv.length === 0) + return; + + bcoin.debug('Serving %d inv items to %s.', + inv.length, this.hostname); + for (i = 0; i < inv.length; i += 50000) { chunk = inv.slice(i, i + 50000); this.write(this.framer.inv(chunk)); @@ -392,6 +398,12 @@ Peer.prototype.sendHeaders = function sendHeaders(items) { headers.push(item); } + if (headers.length === 0) + return; + + bcoin.debug('Serving %d headers to %s.', + headers.length, this.hostname); + for (i = 0; i < headers.length; i += 2000) { chunk = headers.slice(i, i + 2000); this.write(this.framer.headers(chunk)); @@ -850,6 +862,9 @@ Peer.prototype._handleGetUTXOs = function _handleGetUTXOs(payload) { unlock(); } + if (!this.pool.synced) + return done(); + if (this.pool.options.selfish) return done(); @@ -950,6 +965,9 @@ Peer.prototype._handleGetHeaders = function _handleGetHeaders(payload) { unlock(); } + if (!this.pool.synced) + return done(); + if (this.pool.options.selfish) return done(); @@ -1024,6 +1042,9 @@ Peer.prototype._handleGetBlocks = function _handleGetBlocks(payload) { unlock(); } + if (!this.pool.synced) + return done(); + if (this.pool.options.selfish) return done(); @@ -1150,6 +1171,9 @@ Peer.prototype._handleMempool = function _handleMempool() { if (!this.mempool) return done(); + if (!this.pool.synced) + return done(); + if (this.pool.options.selfish) return done(); @@ -1368,8 +1392,7 @@ Peer.prototype._handleGetData = function _handleGetData(items) { Peer.prototype._handleAddr = function _handleAddr(addrs) { var hosts = []; - var now = utils.now(); - var i, addr, ts; + var i, addr; for (i = 0; i < addrs.length; i++) { addr = new NetworkAddress(addrs[i]); @@ -1454,7 +1477,7 @@ Peer.prototype._handleGetAddr = function _handleGetAddr() { items.length, this.hostname); - return this.write(this.framer.addr(items)); + this.write(this.framer.addr(items)); }; Peer.prototype._handleInv = function _handleInv(items) { @@ -1462,8 +1485,6 @@ Peer.prototype._handleInv = function _handleInv(items) { var txs = []; var i, item, unknown; - this.fire('inv', items); - for (i = 0; i < items.length; i++) { item = items[i]; if (item.type === constants.inv.TX) { @@ -1477,6 +1498,8 @@ Peer.prototype._handleInv = function _handleInv(items) { this.invFilter.add(item.hash, 'hex'); } + this.fire('inv', items); + if (blocks.length > 0) this.emit('blocks', blocks); @@ -1539,7 +1562,7 @@ Peer.prototype.getHeaders = function getHeaders(locator, stop) { 'Requesting headers packet from peer with getheaders (%s).', this.hostname); - bcoin.debug('Height: %s, Hash: %s, Stop: %s', + bcoin.debug('Height: %d, Hash: %s, Stop: %s', locator && locator.length ? this.chain._getCachedHeight(locator[0]) : -1, locator && locator.length ? utils.revHex(locator[0]) : 0, stop ? utils.revHex(stop) : 0); @@ -1558,8 +1581,8 @@ Peer.prototype.getBlocks = function getBlocks(locator, stop) { 'Requesting inv packet from peer with getblocks (%s).', this.hostname); - bcoin.debug('Height: %s, Hash: %s, Stop: %s', - locator && locator.length ? this.chain._getCachedHeight(locator[0]) : null, + bcoin.debug('Height: %d, Hash: %s, Stop: %s', + locator && locator.length ? this.chain._getCachedHeight(locator[0]) : -1, locator && locator.length ? utils.revHex(locator[0]) : 0, stop ? utils.revHex(stop) : 0); diff --git a/lib/bcoin/profiler.js b/lib/bcoin/profiler.js index 5470d09a..f2edb75d 100644 --- a/lib/bcoin/profiler.js +++ b/lib/bcoin/profiler.js @@ -52,9 +52,7 @@ Profile.prototype.stopProfiling = function stopProfiling() { if (!v8profiler) return; - assert(this.profile); - - return this.profile.stopProfiling(); + this.profile = v8profiler.stopProfiling(this.name); }; /** @@ -65,9 +63,7 @@ Profile.prototype.del = function del() { if (!v8profiler) return; - assert(this.profile); - - return this.profile['delete'](); + this.profile['delete'](); }; /** @@ -83,7 +79,8 @@ Profile.prototype.save = function save(callback) { if (!v8profiler) return callback(); - assert(this.profile); + if (!this.profile) + this.stopProfiling(); bcoin.debug('Saving CPU profile: %s', this.name);