From 91b3227a0fcc688943c1963388f0c04ba2f7f272 Mon Sep 17 00:00:00 2001 From: Vinnie Falco Date: Wed, 1 Jul 2015 12:26:40 -0700 Subject: [PATCH] Fix canonicalization race in batch apply --- src/ripple/app/misc/NetworkOPs.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/ripple/app/misc/NetworkOPs.cpp b/src/ripple/app/misc/NetworkOPs.cpp index b29fd38e65..01168947f7 100644 --- a/src/ripple/app/misc/NetworkOPs.cpp +++ b/src/ripple/app/misc/NetworkOPs.cpp @@ -890,6 +890,9 @@ void NetworkOPsImp::processTransaction (Transaction::pointer transaction, getApp().getHashRouter ().setFlag (transaction->getID (), SF_SIGGOOD); + // canonicalize can change our pointer + getApp().getMasterTransaction ().canonicalize (&transaction); + if (bLocal) doTransactionSync (transaction, bAdmin, failType); else @@ -1038,9 +1041,6 @@ void NetworkOPsImp::apply (std::unique_lock& batchLock) { m_journal.debug << "Transaction is now included in open ledger"; e.transaction->setStatus (INCLUDED); - - // VFALCO NOTE The value of trans can be changed here! - getApp().getMasterTransaction ().canonicalize (&e.transaction); } else if (e.result == tefPAST_SEQ) {