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
|
||||
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
|
||||
var height = readU32(p, 81);
|
||||
var height = readU32(p, off);
|
||||
off += 4;
|
||||
|
||||
// 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 {
|
||||
v: v,
|
||||
services: services,
|
||||
ts: ts,
|
||||
nonce: nonce,
|
||||
agent: utils.stringify(agent),
|
||||
height: height,
|
||||
relay: relay
|
||||
};
|
||||
|
||||
@ -3,6 +3,9 @@ var bcoin = require('../');
|
||||
var utils = bcoin.utils;
|
||||
|
||||
describe('Protocol', function() {
|
||||
var version = require('../package.json').version;
|
||||
var agent = '/bcoin:' + version + '/';
|
||||
|
||||
var parser;
|
||||
var framer;
|
||||
beforeEach(function() {
|
||||
@ -24,14 +27,16 @@ describe('Protocol', function() {
|
||||
|
||||
packetTest('version', {}, function(payload) {
|
||||
assert.equal(payload.v, 70002);
|
||||
assert.equal(payload.relay, false);
|
||||
assert.equal(payload.agent, agent);
|
||||
assert.equal(payload.height, 0);
|
||||
assert.equal(payload.relay, false);
|
||||
});
|
||||
|
||||
packetTest('version', { relay: true, height: 10 }, function(payload) {
|
||||
assert.equal(payload.v, 70002);
|
||||
assert.equal(payload.relay, true);
|
||||
assert.equal(payload.agent, agent);
|
||||
assert.equal(payload.height, 10);
|
||||
assert.equal(payload.relay, true);
|
||||
});
|
||||
|
||||
packetTest('verack', {}, function(payload) {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user