parser: fix version parsing. check user agent in tests.
This commit is contained in:
parent
3d3e61dc6e
commit
005c11e967
@ -122,17 +122,29 @@ Parser.prototype.parseVersion = function parseVersion(p) {
|
|||||||
// Nonce, very dramatic
|
// Nonce, very dramatic
|
||||||
var nonce = { lo: readU32(p, 72), hi: readU32(p, 76) };
|
var nonce = { lo: readU32(p, 72), hi: readU32(p, 76) };
|
||||||
|
|
||||||
|
// User agent length
|
||||||
|
var result = readIntv(p, 80);
|
||||||
|
var off = result.off;
|
||||||
|
var agent = p.slice(off, off + result.r);
|
||||||
|
off += result.r;
|
||||||
|
|
||||||
// Start height
|
// Start height
|
||||||
var height = readU32(p, 81);
|
var height = readU32(p, off);
|
||||||
|
off += 4;
|
||||||
|
|
||||||
// Relay
|
// Relay
|
||||||
var relay = p.length >= 86 ? p[85] === 1 : true;
|
var relay = p.length > off ? p[off] === 1 : true;
|
||||||
|
|
||||||
|
// NOTE: Could just do this to make relay
|
||||||
|
// `false` when it's not included:
|
||||||
|
// var relay = p[off] === 1;
|
||||||
|
|
||||||
return {
|
return {
|
||||||
v: v,
|
v: v,
|
||||||
services: services,
|
services: services,
|
||||||
ts: ts,
|
ts: ts,
|
||||||
nonce: nonce,
|
nonce: nonce,
|
||||||
|
agent: utils.stringify(agent),
|
||||||
height: height,
|
height: height,
|
||||||
relay: relay
|
relay: relay
|
||||||
};
|
};
|
||||||
|
|||||||
@ -3,6 +3,9 @@ var bcoin = require('../');
|
|||||||
var utils = bcoin.utils;
|
var utils = bcoin.utils;
|
||||||
|
|
||||||
describe('Protocol', function() {
|
describe('Protocol', function() {
|
||||||
|
var version = require('../package.json').version;
|
||||||
|
var agent = '/bcoin:' + version + '/';
|
||||||
|
|
||||||
var parser;
|
var parser;
|
||||||
var framer;
|
var framer;
|
||||||
beforeEach(function() {
|
beforeEach(function() {
|
||||||
@ -24,14 +27,16 @@ describe('Protocol', function() {
|
|||||||
|
|
||||||
packetTest('version', {}, function(payload) {
|
packetTest('version', {}, function(payload) {
|
||||||
assert.equal(payload.v, 70002);
|
assert.equal(payload.v, 70002);
|
||||||
assert.equal(payload.relay, false);
|
assert.equal(payload.agent, agent);
|
||||||
assert.equal(payload.height, 0);
|
assert.equal(payload.height, 0);
|
||||||
|
assert.equal(payload.relay, false);
|
||||||
});
|
});
|
||||||
|
|
||||||
packetTest('version', { relay: true, height: 10 }, function(payload) {
|
packetTest('version', { relay: true, height: 10 }, function(payload) {
|
||||||
assert.equal(payload.v, 70002);
|
assert.equal(payload.v, 70002);
|
||||||
assert.equal(payload.relay, true);
|
assert.equal(payload.agent, agent);
|
||||||
assert.equal(payload.height, 10);
|
assert.equal(payload.height, 10);
|
||||||
|
assert.equal(payload.relay, true);
|
||||||
});
|
});
|
||||||
|
|
||||||
packetTest('verack', {}, function(payload) {
|
packetTest('verack', {}, function(payload) {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user