mirror of
https://github.com/XRPLF/rippled.git
synced 2025-12-06 17:27:55 +00:00
Offer fix rollup:
Fix a case where an offer is not detected becoming unfunded. Make sure we skip unfunded offers in calcNodeDeliverFwd. Issuer of TakerGets can always trade (since funds are unlimited). Enable multi-quality until some funds move. Don't let a placed offer take an expired crossing offer.
This commit is contained in:
@@ -8,7 +8,7 @@ SETUP_LOG (OfferCreateTransactor)
|
||||
|
||||
// Make sure an offer is still valid. If not, mark it unfunded.
|
||||
bool OfferCreateTransactor::bValidOffer (
|
||||
SLE::ref sleOfferDir,
|
||||
SLE::ref sleOffer,
|
||||
uint256 const& uOfferIndex,
|
||||
const uint160& uOfferOwnerID,
|
||||
const STAmount& saOfferPays,
|
||||
@@ -21,7 +21,7 @@ bool OfferCreateTransactor::bValidOffer (
|
||||
{
|
||||
bool bValid = false;
|
||||
|
||||
if (sleOfferDir->isFieldPresent (sfExpiration) && sleOfferDir->getFieldU32 (sfExpiration) <= mEngine->getLedger ()->getParentCloseTimeNC ())
|
||||
if (sleOffer->isFieldPresent (sfExpiration) && sleOffer->getFieldU32 (sfExpiration) <= mEngine->getLedger ()->getParentCloseTimeNC ())
|
||||
{
|
||||
// Offer is expired. Expired offers are considered unfunded. Delete it.
|
||||
WriteLog (lsINFO, OfferCreateTransactor) << "bValidOffer: encountered expired offer";
|
||||
@@ -224,7 +224,7 @@ TER OfferCreateTransactor::takeOffers (
|
||||
bool bValid;
|
||||
|
||||
bValid = bValidOffer (
|
||||
sleOfferDir, uOfferIndex, uOfferOwnerID, saOfferPays, saOfferGets,
|
||||
sleOffer, uOfferIndex, uOfferOwnerID, saOfferPays, saOfferGets,
|
||||
uTakerAccountID,
|
||||
usOfferUnfundedFound, usOfferUnfundedBecame, usAccountTouched,
|
||||
saOfferFunds);
|
||||
|
||||
Reference in New Issue
Block a user