mirror of
https://github.com/XRPLF/rippled.git
synced 2025-11-21 03:26:01 +00:00
TransactionEngine: do not allow bad transfer rate to be set.
This commit is contained in:
@@ -166,18 +166,24 @@ TER TransactionEngine::doAccountSet(const SerializedTransaction& txn)
|
|||||||
{
|
{
|
||||||
uint32 uRate = txn.getITFieldU32(sfTransferRate);
|
uint32 uRate = txn.getITFieldU32(sfTransferRate);
|
||||||
|
|
||||||
if (!uRate)
|
if (!uRate || uRate == QUALITY_ONE)
|
||||||
{
|
{
|
||||||
Log(lsINFO) << "doAccountSet: unset transfer rate";
|
Log(lsINFO) << "doAccountSet: unset transfer rate";
|
||||||
|
|
||||||
mTxnAccount->makeIFieldAbsent(sfTransferRate);
|
mTxnAccount->makeIFieldAbsent(sfTransferRate);
|
||||||
}
|
}
|
||||||
else
|
else if (uRate > QUALITY_ONE)
|
||||||
{
|
{
|
||||||
Log(lsINFO) << "doAccountSet: set transfer rate";
|
Log(lsINFO) << "doAccountSet: set transfer rate";
|
||||||
|
|
||||||
mTxnAccount->setIFieldU32(sfTransferRate, uRate);
|
mTxnAccount->setIFieldU32(sfTransferRate, uRate);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Log(lsINFO) << "doAccountSet: bad transfer rate";
|
||||||
|
|
||||||
|
return temBAD_TRANSFER_RATE;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ bool transResultInfo(TER terCode, std::string& strToken, std::string& strHuman)
|
|||||||
{ temBAD_PATH, "temBAD_PATH", "Malformed." },
|
{ temBAD_PATH, "temBAD_PATH", "Malformed." },
|
||||||
{ temBAD_PATH_LOOP, "temBAD_PATH_LOOP", "Malformed." },
|
{ temBAD_PATH_LOOP, "temBAD_PATH_LOOP", "Malformed." },
|
||||||
{ temBAD_PUBLISH, "temBAD_PUBLISH", "Malformed: bad publish." },
|
{ temBAD_PUBLISH, "temBAD_PUBLISH", "Malformed: bad publish." },
|
||||||
|
{ temBAD_TRANSFER_RATE, "temBAD_TRANSFER_RATE", "Malformed: transfer rate must be >= 1.0" },
|
||||||
{ temBAD_SET_ID, "temBAD_SET_ID", "Malformed." },
|
{ temBAD_SET_ID, "temBAD_SET_ID", "Malformed." },
|
||||||
{ temCREATEXNS, "temCREATEXNS", "Can not specify non XNS for Create." },
|
{ temCREATEXNS, "temCREATEXNS", "Can not specify non XNS for Create." },
|
||||||
{ temDST_IS_SRC, "temDST_IS_SRC", "Destination may not be source." },
|
{ temDST_IS_SRC, "temDST_IS_SRC", "Destination may not be source." },
|
||||||
@@ -89,3 +90,4 @@ std::string transHuman(TER terCode)
|
|||||||
|
|
||||||
return transResultInfo(terCode, strToken, strHuman) ? strHuman : "-";
|
return transResultInfo(terCode, strToken, strHuman) ? strHuman : "-";
|
||||||
}
|
}
|
||||||
|
// vim:ts=4
|
||||||
|
|||||||
@@ -33,6 +33,7 @@ enum TER // aka TransactionEngineResult
|
|||||||
temBAD_PATH,
|
temBAD_PATH,
|
||||||
temBAD_PATH_LOOP,
|
temBAD_PATH_LOOP,
|
||||||
temBAD_PUBLISH,
|
temBAD_PUBLISH,
|
||||||
|
temBAD_TRANSFER_RATE,
|
||||||
temBAD_SET_ID,
|
temBAD_SET_ID,
|
||||||
temCREATEXNS,
|
temCREATEXNS,
|
||||||
temDST_IS_SRC,
|
temDST_IS_SRC,
|
||||||
|
|||||||
Reference in New Issue
Block a user