mirror of
https://github.com/XRPLF/rippled.git
synced 2025-11-28 15:05:53 +00:00
Avoid race conditions updating ledger fee entries
This commit is contained in:
committed by
Vinnie Falco
parent
f7817866ba
commit
02483b2e0b
@@ -1947,28 +1947,39 @@ void Ledger::initializeFees ()
|
|||||||
|
|
||||||
void Ledger::updateFees ()
|
void Ledger::updateFees ()
|
||||||
{
|
{
|
||||||
mBaseFee = getConfig ().FEE_DEFAULT;
|
uint64 baseFee = getConfig ().FEE_DEFAULT;
|
||||||
mReferenceFeeUnits = 10;
|
uint32 referenceFeeUnits = 10;
|
||||||
mReserveBase = getConfig ().FEE_ACCOUNT_RESERVE;
|
uint32 reserveBase = getConfig ().FEE_ACCOUNT_RESERVE;
|
||||||
mReserveIncrement = getConfig ().FEE_OWNER_RESERVE;
|
int64 reserveIncrement = getConfig ().FEE_OWNER_RESERVE;
|
||||||
|
|
||||||
LedgerStateParms p = lepNONE;
|
LedgerStateParms p = lepNONE;
|
||||||
SLE::pointer sle = getASNode (p, Ledger::getLedgerFeeIndex (), ltFEE_SETTINGS);
|
SLE::pointer sle = getASNode (p, Ledger::getLedgerFeeIndex (), ltFEE_SETTINGS);
|
||||||
|
|
||||||
if (!sle)
|
if (sle)
|
||||||
return;
|
{
|
||||||
|
if (sle->getFieldIndex (sfBaseFee) != -1)
|
||||||
|
baseFee = sle->getFieldU64 (sfBaseFee);
|
||||||
|
|
||||||
if (sle->getFieldIndex (sfBaseFee) != -1)
|
if (sle->getFieldIndex (sfReferenceFeeUnits) != -1)
|
||||||
mBaseFee = sle->getFieldU64 (sfBaseFee);
|
referenceFeeUnits = sle->getFieldU32 (sfReferenceFeeUnits);
|
||||||
|
|
||||||
if (sle->getFieldIndex (sfReferenceFeeUnits) != -1)
|
if (sle->getFieldIndex (sfReserveBase) != -1)
|
||||||
mReferenceFeeUnits = sle->getFieldU32 (sfReferenceFeeUnits);
|
reserveBase = sle->getFieldU32 (sfReserveBase);
|
||||||
|
|
||||||
if (sle->getFieldIndex (sfReserveBase) != -1)
|
if (sle->getFieldIndex (sfReserveIncrement) != -1)
|
||||||
mReserveBase = sle->getFieldU32 (sfReserveBase);
|
reserveIncrement = sle->getFieldU32 (sfReserveIncrement);
|
||||||
|
}
|
||||||
|
|
||||||
if (sle->getFieldIndex (sfReserveIncrement) != -1)
|
{
|
||||||
mReserveIncrement = sle->getFieldU32 (sfReserveIncrement);
|
StaticScopedLockType sl (sPendingSaveLock, __FILE__, __LINE__);
|
||||||
|
if (mBaseFee == 0)
|
||||||
|
{
|
||||||
|
mBaseFee = baseFee;
|
||||||
|
mReferenceFeeUnits = referenceFeeUnits;
|
||||||
|
mReserveBase = reserveBase;
|
||||||
|
mReserveIncrement = reserveIncrement;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
uint64 Ledger::scaleFeeBase (uint64 fee)
|
uint64 Ledger::scaleFeeBase (uint64 fee)
|
||||||
|
|||||||
Reference in New Issue
Block a user