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) {
|
Peer.prototype._handleVersion = function handleVersion(payload) {
|
||||||
if (payload.v < constants.minVersion)
|
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
|
// ACK
|
||||||
this._write(this.framer.verack());
|
this._write(this.framer.verack());
|
||||||
|
|||||||
@ -59,7 +59,7 @@ function Pool(node, options) {
|
|||||||
options.headers = true;
|
options.headers = true;
|
||||||
} else {
|
} else {
|
||||||
if (options.headers == null)
|
if (options.headers == null)
|
||||||
options.headers = false;
|
options.headers = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
this.syncing = false;
|
this.syncing = false;
|
||||||
@ -789,7 +789,11 @@ Pool.prototype._createPeer = function _createPeer(options) {
|
|||||||
createSocket: this.options.createSocket,
|
createSocket: this.options.createSocket,
|
||||||
relay: this.options.relay,
|
relay: this.options.relay,
|
||||||
priority: options.priority,
|
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) {
|
peer.on('error', function(err) {
|
||||||
@ -852,30 +856,6 @@ Pool.prototype._createPeer = function _createPeer(options) {
|
|||||||
if (version.height > self.block.versionHeight)
|
if (version.height > self.block.versionHeight)
|
||||||
self.block.versionHeight = version.height;
|
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(
|
utils.debug(
|
||||||
'Received version from %s: version=%d height=%d agent=%s',
|
'Received version from %s: version=%d height=%d agent=%s',
|
||||||
peer.host, version.v, version.height, version.agent);
|
peer.host, version.v, version.height, version.agent);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user