From 693e2aaae74d26b06eb001ab7bbacc218690d0ba Mon Sep 17 00:00:00 2001 From: wltsmrz Date: Wed, 23 Apr 2014 14:39:30 -0700 Subject: [PATCH] Decrement transaction sequence if transaction.complete fails --- src/js/ripple/transactionmanager.js | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/src/js/ripple/transactionmanager.js b/src/js/ripple/transactionmanager.js index 1e261ac5..22d7bcb7 100644 --- a/src/js/ripple/transactionmanager.js +++ b/src/js/ripple/transactionmanager.js @@ -195,10 +195,23 @@ TransactionManager.prototype._fillSequence = function(tx, callback) { function sequenceLoaded(err, sequence) { if (typeof sequence !== 'number') { - callback(new Error('Failed to fetch account transaction sequence')); - } else { - submitFill(sequence, callback); + return callback(new Error('Failed to fetch account transaction sequence')); } + + var sequenceDif = tx.tx_json.Sequence - sequence; + var submitted = 0; + + ;(function nextFill(sequence) { + if (sequence >= tx.tx_json.Sequence) return; + + submitFill(sequence, function() { + if (++submitted === sequenceDif) { + callback(); + } else { + nextFill(++sequence); + } + }); + })(sequence); }; this._loadSequence(sequenceLoaded); @@ -581,6 +594,7 @@ TransactionManager.prototype.submit = function(tx) { // If the transaction can't complete, decrement sequence so that // subsequent transactions if (!tx.complete()) { + this._nextSequence--; return; }