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:
David Schwartz
2013-08-06 09:41:48 -07:00
parent 87a27f5239
commit c07b28c899
2 changed files with 10 additions and 10 deletions

View File

@@ -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);