mirror of
https://github.com/Xahau/xahau.js.git
synced 2025-11-22 05:05:48 +00:00
Fix error on ledger subscription message without validated_ledgers
This commit is contained in:
@@ -38,6 +38,17 @@ class Connection extends EventEmitter {
|
|||||||
this._nextRequestID = 1;
|
this._nextRequestID = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_updateLedgerVersions(data) {
|
||||||
|
this._ledgerVersion = Number(data.ledger_index);
|
||||||
|
if (data.validated_ledgers) {
|
||||||
|
this._availableLedgerVersions.reset();
|
||||||
|
this._availableLedgerVersions.parseAndAddRanges(
|
||||||
|
data.validated_ledgers);
|
||||||
|
} else {
|
||||||
|
this._availableLedgerVersions.addValue(this._ledgerVersion);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// return value is array of arguments to Connection.emit
|
// return value is array of arguments to Connection.emit
|
||||||
_parseMessage(message) {
|
_parseMessage(message) {
|
||||||
const data = JSON.parse(message);
|
const data = JSON.parse(message);
|
||||||
@@ -48,10 +59,7 @@ class Connection extends EventEmitter {
|
|||||||
return [data.id.toString(), data];
|
return [data.id.toString(), data];
|
||||||
} else if (isStreamMessageType(data.type)) {
|
} else if (isStreamMessageType(data.type)) {
|
||||||
if (data.type === 'ledgerClosed') {
|
if (data.type === 'ledgerClosed') {
|
||||||
this._ledgerVersion = Number(data.ledger_index);
|
this._updateLedgerVersions(data);
|
||||||
this._availableLedgerVersions.reset();
|
|
||||||
this._availableLedgerVersions.parseAndAddRanges(
|
|
||||||
data.validated_ledgers);
|
|
||||||
}
|
}
|
||||||
return [data.type, data];
|
return [data.type, data];
|
||||||
} else if (data.type === undefined && data.error) {
|
} else if (data.type === undefined && data.error) {
|
||||||
@@ -99,10 +107,8 @@ class Connection extends EventEmitter {
|
|||||||
command: 'subscribe',
|
command: 'subscribe',
|
||||||
streams: ['ledger']
|
streams: ['ledger']
|
||||||
};
|
};
|
||||||
return this.request(request).then(response => {
|
return this.request(request).then(data => {
|
||||||
this._ledgerVersion = Number(response.ledger_index);
|
this._updateLedgerVersions(data);
|
||||||
this._availableLedgerVersions.parseAndAddRanges(
|
|
||||||
response.validated_ledgers);
|
|
||||||
this._isReady = true;
|
this._isReady = true;
|
||||||
this.emit('connected');
|
this.emit('connected');
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -42,7 +42,6 @@ describe('RippleAPIBroadcast', function() {
|
|||||||
this.mocks.forEach(mock => mock.socket.send(JSON.stringify(ledgerNext)));
|
this.mocks.forEach(mock => mock.socket.send(JSON.stringify(ledgerNext)));
|
||||||
|
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
console.log('-- ledgerVersion', this.api.ledgerVersion);
|
|
||||||
assert.strictEqual(gotLedger, 1);
|
assert.strictEqual(gotLedger, 1);
|
||||||
done();
|
done();
|
||||||
}, 50);
|
}, 50);
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ const assert = require('assert-diff');
|
|||||||
const setupAPI = require('./setup-api');
|
const setupAPI = require('./setup-api');
|
||||||
const RippleAPI = require('ripple-api').RippleAPI;
|
const RippleAPI = require('ripple-api').RippleAPI;
|
||||||
const utils = RippleAPI._PRIVATE.ledgerUtils;
|
const utils = RippleAPI._PRIVATE.ledgerUtils;
|
||||||
|
const ledgerClose = require('./fixtures/rippled/ledger-close.json');
|
||||||
|
|
||||||
|
|
||||||
function unused() {
|
function unused() {
|
||||||
@@ -261,4 +262,13 @@ describe('Connection', function() {
|
|||||||
|
|
||||||
this.api.connection._onMessage(JSON.stringify({type: 'unknown'}));
|
this.api.connection._onMessage(JSON.stringify({type: 'unknown'}));
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('ledger close without validated_ledgers', function(done) {
|
||||||
|
const message = _.omit(ledgerClose, 'validated_ledgers');
|
||||||
|
this.api.on('ledger', function(ledger) {
|
||||||
|
assert.strictEqual(ledger.ledgerVersion, 8819951);
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
this.api.connection._ws.emit('message', JSON.stringify(message));
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user