diff --git a/src/cpp/ripple/LedgerConsensus.cpp b/src/cpp/ripple/LedgerConsensus.cpp index c2aef215eb..5fcd7388d5 100644 --- a/src/cpp/ripple/LedgerConsensus.cpp +++ b/src/cpp/ripple/LedgerConsensus.cpp @@ -1166,7 +1166,7 @@ void LedgerConsensus::applyTransactions(SHAMap::ref set, Ledger::ref applyLedger int changes; bool certainRetry = true; - for (int pass = 0; pass < 8; ++pass) + for (int pass = 0; pass < 12; ++pass) { cLog(lsDEBUG) << "Pass: " << pass << " Txns: " << failedTransactions.size() << (certainRetry ? " retriable" : " final"); @@ -1205,7 +1205,7 @@ void LedgerConsensus::applyTransactions(SHAMap::ref set, Ledger::ref applyLedger return; // Stop retriable passes - if ((!changes) || (pass >= 4)) + if ((!changes) || (pass >= 8)) certainRetry = false; } } diff --git a/src/cpp/ripple/TransactionEngine.cpp b/src/cpp/ripple/TransactionEngine.cpp index 8af514c7cc..2083b4e056 100644 --- a/src/cpp/ripple/TransactionEngine.cpp +++ b/src/cpp/ripple/TransactionEngine.cpp @@ -112,11 +112,7 @@ TER TransactionEngine::applyTransaction(const SerializedTransaction& txn, Transa cLog(lsINFO) << "applyTransaction: terResult=" << strToken << " : " << terResult << " : " << strHuman; - if (terResult == tesSUCCESS) - didApply = true; - else if (isTepSuccess(terResult) && isSetBit(params, tapRETRY)) - didApply = true; - else if (isTecClaim(terResult) && !isSetBit(params, tapRETRY)) + if (isTecClaim(terResult) && !isSetBit(params, tapRETRY)) { // only claim the transaction fee cLog(lsINFO) << "Reprocessing to only claim fee"; mNodes.clear(); @@ -155,6 +151,8 @@ TER TransactionEngine::applyTransaction(const SerializedTransaction& txn, Transa } } } + else if ((terResult == tesSUCCESS) || (isTesSuccess(terResult) && !isSetBit(params, tapRETRY))) + didApply = true; else cLog(lsINFO) << "Not applying transaction"; diff --git a/src/cpp/ripple/TransactionErr.h b/src/cpp/ripple/TransactionErr.h index e87ac3ead9..04fa50f960 100644 --- a/src/cpp/ripple/TransactionErr.h +++ b/src/cpp/ripple/TransactionErr.h @@ -126,7 +126,7 @@ enum TER // aka TransactionEngineResult #define isTemMalformed(x) ((x) >= temMALFORMED && (x) < tefFAILURE) #define isTefFailure(x) ((x) >= tefFAILURE && (x) < terRETRY) #define isTerRetry(x) ((x) >= terRETRY && (x) < tesSUCCESS) -#define isTepSuccess(x) ((x) >= tesSUCCESS) +#define isTesSuccess(x) ((x) >= tesSUCCESS) #define isTecClaim(x) ((x) >= tecCLAIM) bool transResultInfo(TER terCode, std::string& strToken, std::string& strHuman);