From f065179d697ea1e050ad8c3c6597721d860d77c3 Mon Sep 17 00:00:00 2001 From: Christopher Jeffrey Date: Wed, 25 May 2016 03:15:00 -0700 Subject: [PATCH] fix banning in certain cases. --- lib/bcoin/peer.js | 8 +++++--- lib/bcoin/pool.js | 1 - 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/lib/bcoin/peer.js b/lib/bcoin/peer.js index 38e86229..1a863c7b 100644 --- a/lib/bcoin/peer.js +++ b/lib/bcoin/peer.js @@ -184,7 +184,7 @@ Peer.prototype._init = function init() { this.parser.on('error', function(err) { self.sendReject(null, 'malformed', 'error parsing message', 10); - self._error(err); + self._error(err, true); }); this.request('verack', function callee(err) { @@ -527,7 +527,7 @@ Peer.prototype.write = function write(chunk) { * @param {String|Error} err */ -Peer.prototype._error = function error(err) { +Peer.prototype._error = function error(err, keep) { if (this.destroyed) return; @@ -536,7 +536,9 @@ Peer.prototype._error = function error(err) { err.message += ' (' + this.hostname + ')'; - this.destroy(); + if (!keep) + this.destroy(); + this.emit('error', err); }; diff --git a/lib/bcoin/pool.js b/lib/bcoin/pool.js index 92823e5c..6400da66 100644 --- a/lib/bcoin/pool.js +++ b/lib/bcoin/pool.js @@ -882,7 +882,6 @@ Pool.prototype._handleBlock = function _handleBlock(block, peer, callback) { if (err.reason === 'bad-prevblk') { if (self.options.headers) { peer.setMisbehavior(10); - peer.destroy(); return callback(err); } return self.resolveOrphan(peer, null, block.hash('hex'), function(e) {