mirror of
https://github.com/XRPLF/rippled.git
synced 2026-04-29 15:37:57 +00:00
extra checks after sync with target
This commit is contained in:
@@ -257,6 +257,9 @@ isFrozen(
|
||||
MPTIssue const& mptIssue,
|
||||
int depth)
|
||||
{
|
||||
if (account == mptIssue.getIssuer())
|
||||
return false;
|
||||
|
||||
return isGlobalFrozen(view, mptIssue) ||
|
||||
isIndividualFrozen(view, account, mptIssue) ||
|
||||
isVaultPseudoAccountFrozen(view, account, mptIssue, depth);
|
||||
|
||||
@@ -41,11 +41,6 @@ LoanBrokerCoverDeposit::preclaim(PreclaimContext const& ctx)
|
||||
JLOG(ctx.j.warn()) << "LoanBroker does not exist.";
|
||||
return tecNO_ENTRY;
|
||||
}
|
||||
if (account != sleBroker->at(sfOwner))
|
||||
{
|
||||
JLOG(ctx.j.warn()) << "Account is not the owner of the LoanBroker.";
|
||||
return tecNO_PERMISSION;
|
||||
}
|
||||
auto const vault = ctx.view.read(keylet::vault(sleBroker->at(sfVaultID)));
|
||||
if (!vault)
|
||||
{
|
||||
|
||||
@@ -59,11 +59,6 @@ LoanBrokerCoverWithdraw::preclaim(PreclaimContext const& ctx)
|
||||
JLOG(ctx.j.warn()) << "LoanBroker does not exist.";
|
||||
return tecNO_ENTRY;
|
||||
}
|
||||
if (account != sleBroker->at(sfOwner))
|
||||
{
|
||||
JLOG(ctx.j.warn()) << "Account is not the owner of the LoanBroker.";
|
||||
return tecNO_PERMISSION;
|
||||
}
|
||||
auto const vault = ctx.view.read(keylet::vault(sleBroker->at(sfVaultID)));
|
||||
if (!vault)
|
||||
{
|
||||
@@ -131,11 +126,19 @@ LoanBrokerCoverWithdraw::preclaim(PreclaimContext const& ctx)
|
||||
if ((coverAvail - amount) < minimumCover)
|
||||
return tecINSUFFICIENT_FUNDS;
|
||||
|
||||
// Allow returning frozen/locked assets to issuer for both IOUs and MPTs.
|
||||
// When withdrawing to the issuer, ignore freeze since frozen IOUs and
|
||||
// locked MPTs can both be sent back to their issuer.
|
||||
FreezeHandling const freezeHandling =
|
||||
(dstAcct == vaultAsset.getIssuer() || account == vaultAsset.getIssuer())
|
||||
? FreezeHandling::fhIGNORE_FREEZE
|
||||
: FreezeHandling::fhZERO_IF_FROZEN;
|
||||
|
||||
if (accountHolds(
|
||||
ctx.view,
|
||||
pseudoAccountID,
|
||||
vaultAsset,
|
||||
FreezeHandling::fhZERO_IF_FROZEN,
|
||||
freezeHandling,
|
||||
AuthHandling::ahZERO_IF_UNAUTHORIZED,
|
||||
ctx.j) < amount)
|
||||
return tecINSUFFICIENT_FUNDS;
|
||||
|
||||
@@ -86,7 +86,8 @@ VaultDeposit::preclaim(PreclaimContext const& ctx)
|
||||
return vaultAsset.holds<Issue>() ? tecFROZEN : tecLOCKED;
|
||||
|
||||
// Cannot deposit if the shares of the vault are frozen
|
||||
if (isFrozen(ctx.view, account, vaultShare))
|
||||
bool const isAssetIssuer = (account == vaultAsset.getIssuer());
|
||||
if (!isAssetIssuer && isFrozen(ctx.view, account, vaultShare))
|
||||
return tecLOCKED;
|
||||
|
||||
if (vault->isFlag(lsfVaultPrivate) && account != vault->at(sfOwner))
|
||||
|
||||
Reference in New Issue
Block a user