diff --git a/lib/bcoin/peer.js b/lib/bcoin/peer.js index 56c94be8..da908426 100644 --- a/lib/bcoin/peer.js +++ b/lib/bcoin/peer.js @@ -167,7 +167,7 @@ Peer.prototype._init = function init() { self._write(self.framer.packet('getaddr', new Buffer([]))); if (self.pool.options.headers) { - if (self.version && self.version.v > 70012) + if (self.version && self.version.version > 70012) self._write(self.framer.packet('sendheaders', new Buffer([]))); } }); @@ -444,27 +444,42 @@ Peer.prototype._emitMerkle = function _emitMerkle(payload) { }; Peer.prototype._handleVersion = function handleVersion(payload) { - if (payload.v < constants.minVersion) - return this._error('Peer doesn\'t support required protocol version.'); + if (payload.version < constants.minVersion) { + this._error('Peer doesn\'t support required protocol version.'); + this.pool.setMisbehavior(this, 100); + return; + } if (this.options.headers) { - if (payload.v < 31800) - return this._error('Peer doesn\'t support getheaders.'); + if (payload.version < 31800) { + this._error('Peer doesn\'t support getheaders.'); + this.pool.setMisbehavior(this, 100); + return; + } } if (this.options.network) { - if (!payload.network) - return this._error('Peer does not support network services.'); + if (!payload.network) { + this._error('Peer does not support network services.'); + this.pool.setMisbehavior(this, 100); + return; + } } if (this.options.spv) { - if (!payload.bloom && payload.v < 70011) - return this._error('Peer does not support bip37.'); + if (!payload.bloom && payload.version < 70011) { + this._error('Peer does not support bip37.'); + this.pool.setMisbehavior(this, 100); + return; + } } if (this.options.witness) { - if (!payload.witness) - return this._error('Peer does not support segregated witness.'); + if (!payload.witness) { + this._error('Peer does not support segregated witness.'); + this.pool.setMisbehavior(this, 100); + return; + } } // ACK diff --git a/lib/bcoin/pool.js b/lib/bcoin/pool.js index dafe7a7e..b4047f1a 100644 --- a/lib/bcoin/pool.js +++ b/lib/bcoin/pool.js @@ -857,7 +857,7 @@ Pool.prototype._createPeer = function _createPeer(options) { utils.debug( 'Received version from %s: version=%d height=%d agent=%s', - peer.host, version.v, version.height, version.agent); + peer.host, version.version, version.height, version.agent); self.emit('version', version, peer); }); diff --git a/lib/bcoin/protocol/parser.js b/lib/bcoin/protocol/parser.js index e422cbbe..345fd52e 100644 --- a/lib/bcoin/protocol/parser.js +++ b/lib/bcoin/protocol/parser.js @@ -176,11 +176,11 @@ Parser.parsePong = function parsePong(p) { }; Parser.parseVersion = function parseVersion(p) { - var v, services, ts, recv, from, nonce, agent, height, relay; + var version, services, ts, recv, from, nonce, agent, height, relay; p = new BufferReader(p); - v = p.readU32(); + version = p.readU32(); services = p.readU64(); // Timestamp @@ -221,7 +221,7 @@ Parser.parseVersion = function parseVersion(p) { } return { - v: v, + version: version, services: services, network: (services & constants.services.network) !== 0, getutxo: (services & constants.services.getutxo) !== 0,