From 2cd434e8618044457257da27aa7368d1678e5534 Mon Sep 17 00:00:00 2001 From: wltsmrz Date: Wed, 17 Sep 2014 13:42:24 -0700 Subject: [PATCH] Fix orderbook reset on reconnect --- src/js/ripple/orderbook.js | 24 +++++++++++++++++++----- test/orderbook-test.js | 2 +- 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/src/js/ripple/orderbook.js b/src/js/ripple/orderbook.js index c27d46fd..2516642d 100644 --- a/src/js/ripple/orderbook.js +++ b/src/js/ripple/orderbook.js @@ -78,19 +78,20 @@ function OrderBook(remote, getsC, getsI, paysC, paysI, key) { }); this.on('unsubscribe', function() { - self._ownerFunds = { }; + self.resetCache(); self._remote.removeListener('transaction', updateFundedAmounts); self._remote.removeListener('transaction', updateTransferRate); }); - this._remote.on('prepare_subscribe', function() { + this._remote.once('prepare_subscribe', function() { self.subscribe(); }); this._remote.on('disconnect', function() { - self._ownerFunds = { }; - self._offerCounts = { }; - self._synchronized = false; + self.resetCache(); + self._remote.once('prepare_subscribe', function() { + self.subscribe(); + }); }); function updateFundedAmounts(message) { @@ -195,6 +196,16 @@ OrderBook.prototype.unsubscribe = function() { this.emit('unsubscribe'); }; +/** + * Reset cached owner funds, offer counts + */ + +OrderBook.prototype.resetCache = function() { + this._ownerFunds = { }; + this._offerCounts = { }; + this._synchronized = false; +}; + /** * Check that the funds for offer owner have been cached * @@ -695,6 +706,9 @@ OrderBook.prototype.requestOffers = function(callback) { log.info('requested offers', self._key, 'offers: ' + res.offers.length); } + // Reset offers + self._offers = [ ]; + for (var i=0, l=res.offers.length; i