version packet handling.
This commit is contained in:
parent
786aed49dd
commit
2d028bb4b4
@ -444,7 +444,27 @@ 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');
|
||||
return this._error('Peer doesn\'t support required protocol version.');
|
||||
|
||||
if (this.options.headers) {
|
||||
if (payload.v < 31800)
|
||||
return this._error('Peer doesn\'t support getheaders.');
|
||||
}
|
||||
|
||||
if (this.options.network) {
|
||||
if (!payload.network)
|
||||
return this._error('Peer does not support network services.');
|
||||
}
|
||||
|
||||
if (this.options.spv) {
|
||||
if (!payload.bloom && payload.v < 70011)
|
||||
return this._error('Peer does not support bip37.');
|
||||
}
|
||||
|
||||
if (this.options.witness) {
|
||||
if (!payload.witness)
|
||||
return this._error('Peer does not support segregated witness.');
|
||||
}
|
||||
|
||||
// ACK
|
||||
this._write(this.framer.verack());
|
||||
|
||||
@ -59,7 +59,7 @@ function Pool(node, options) {
|
||||
options.headers = true;
|
||||
} else {
|
||||
if (options.headers == null)
|
||||
options.headers = false;
|
||||
options.headers = true;
|
||||
}
|
||||
|
||||
this.syncing = false;
|
||||
@ -789,7 +789,11 @@ Pool.prototype._createPeer = function _createPeer(options) {
|
||||
createSocket: this.options.createSocket,
|
||||
relay: this.options.relay,
|
||||
priority: options.priority,
|
||||
socket: options.socket
|
||||
socket: options.socket,
|
||||
network: options.network,
|
||||
spv: options.spv,
|
||||
witness: options.witness,
|
||||
headers: this.options.headers
|
||||
});
|
||||
|
||||
peer.on('error', function(err) {
|
||||
@ -852,30 +856,6 @@ Pool.prototype._createPeer = function _createPeer(options) {
|
||||
if (version.height > self.block.versionHeight)
|
||||
self.block.versionHeight = version.height;
|
||||
|
||||
if (options.network) {
|
||||
if (!version.network) {
|
||||
utils.debug('Peer does not support network services. Killing.');
|
||||
self.setMisbehavior(peer, 100);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (options.spv) {
|
||||
if (!version.bloom || version.v < 70011) {
|
||||
utils.debug('Peer does not support bip37. Killing.');
|
||||
self.setMisbehavior(peer, 100);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (options.witness) {
|
||||
if (!version.witness) {
|
||||
utils.debug('Peer does not support segregated witness. Killing.');
|
||||
self.setMisbehavior(peer, 100);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
utils.debug(
|
||||
'Received version from %s: version=%d height=%d agent=%s',
|
||||
peer.host, version.v, version.height, version.agent);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user