Fee change bugfixes.

This commit is contained in:
JoelKatz
2013-04-23 11:48:51 -07:00
parent 8b15cb8773
commit b906cebf12
7 changed files with 43 additions and 17 deletions

View File

@@ -43,12 +43,6 @@ TER ChangeTransactor::checkSeq()
TER ChangeTransactor::payFee()
{
if (isSetBit(mParams, tapOPEN_LEDGER))
{
cLog(lsWARNING) << "Change transaction against open ledger";
return temINVALID;
}
if (mTxn.getTransactionFee() != STAmount())
{
cLog(lsWARNING) << "Change transaction with non-zero fee";
@@ -58,6 +52,25 @@ TER ChangeTransactor::payFee()
return tesSUCCESS;
}
TER ChangeTransactor::preCheck()
{
mTxnAccountID = mTxn.getSourceAccount().getAccountID();
if (mTxnAccountID.isNonZero())
{
cLog(lsWARNING) << "applyTransaction: bad source id";
return temBAD_SRC_ACCOUNT;
}
if (isSetBit(mParams, tapOPEN_LEDGER))
{
cLog(lsWARNING) << "Change transaction against open ledger";
return temINVALID;
}
return tesSUCCESS;
}
TER ChangeTransactor::applyFeature()
{
uint256 feature = mTxn.getFieldH256(sfFeature);
@@ -84,12 +97,16 @@ TER ChangeTransactor::applyFee()
if (!feeObject)
feeObject = mEngine->entryCreate(ltFEE_SETTINGS, Ledger::getLedgerFeeIndex());
cLog(lsINFO) << "Previous fee object: " << feeObject->getJson(0);
feeObject->setFieldU64(sfBaseFee, mTxn.getFieldU64(sfBaseFee));
feeObject->setFieldU32(sfReferenceFeeUnits, mTxn.getFieldU32(sfReferenceFeeUnits));
feeObject->setFieldU32(sfReserveBase, mTxn.getFieldU32(sfReserveBase));
feeObject->setFieldU32(sfReserveIncrement, mTxn.getFieldU32(sfReserveIncrement));
mEngine->entryModify(feeObject);
cLog(lsINFO) << "New fee object: " << feeObject->getJson(0);
cLog(lsWARNING) << "Fees have been changed";
return tesSUCCESS;
}