diff --git a/src/cpp/ripple/RegularKeySetTransactor.cpp b/src/cpp/ripple/RegularKeySetTransactor.cpp index f74b8f5a9..b2361c873 100644 --- a/src/cpp/ripple/RegularKeySetTransactor.cpp +++ b/src/cpp/ripple/RegularKeySetTransactor.cpp @@ -5,17 +5,14 @@ SETUP_LOG(); -void RegularKeySetTransactor::calculateFee() +uint64_t RegularKeySetTransactor::calculateBaseFee() { - Transactor::calculateFee(); - if ( !(mTxnAccount->getFlags() & lsfPasswordSpent) && (mSigningPubKey.getAccountID() == mTxnAccountID)) { // flag is armed and they signed with the right account - - mSourceBalance = mTxnAccount->getFieldAmount(sfBalance); - if(mSourceBalance < mFeeDue) mFeeDue = 0; + return 0; } + return Transactor::calculateBaseFee(); } diff --git a/src/cpp/ripple/RegularKeySetTransactor.h b/src/cpp/ripple/RegularKeySetTransactor.h index 35d744c8f..775bd0e01 100644 --- a/src/cpp/ripple/RegularKeySetTransactor.h +++ b/src/cpp/ripple/RegularKeySetTransactor.h @@ -2,7 +2,7 @@ class RegularKeySetTransactor : public Transactor { - void calculateFee(); + uint64_t calculateBaseFee(); public: RegularKeySetTransactor(const SerializedTransaction& txn,TransactionEngineParams params, TransactionEngine* engine) : Transactor(txn,params,engine) {} TER checkFee(); diff --git a/src/cpp/ripple/Transactor.cpp b/src/cpp/ripple/Transactor.cpp index ff57daff5..07e87592b 100644 --- a/src/cpp/ripple/Transactor.cpp +++ b/src/cpp/ripple/Transactor.cpp @@ -42,7 +42,12 @@ Transactor::Transactor(const SerializedTransaction& txn,TransactionEngineParams void Transactor::calculateFee() { - mFeeDue = theConfig.FEE_DEFAULT; + mFeeDue = STAmount(mEngine->getLedger()->scaleFeeLoad(calculateBaseFee())); +} + +uint64_t Transactor::calculateBaseFee() +{ + return theConfig.FEE_DEFAULT; } TER Transactor::payFee() diff --git a/src/cpp/ripple/Transactor.h b/src/cpp/ripple/Transactor.h index 62d2a5e45..c61878634 100644 --- a/src/cpp/ripple/Transactor.h +++ b/src/cpp/ripple/Transactor.h @@ -24,7 +24,11 @@ protected: TER checkSeq(); TER payFee(); - virtual void calculateFee(); + void calculateFee(); + + // Returns the fee, not scaled for load (Should be in fee units. FIXME) + virtual uint64_t calculateBaseFee(); + virtual TER checkSig(); virtual TER doApply()=0;