mirror of
https://github.com/XRPLF/rippled.git
synced 2026-08-23 15:20:54 +00:00
Revert changes preventing deletion of a vault
This commit is contained in:
@@ -1248,9 +1248,9 @@ class Vault_test : public beast::unit_test::suite
|
||||
env(tx);
|
||||
env.close();
|
||||
|
||||
// Cannot delete vault with a global lock
|
||||
// Can delete empty vault, even if global lock
|
||||
tx = vault.del({.owner = owner, .id = keylet.key});
|
||||
env(tx, ter{tecNO_PERMISSION});
|
||||
env(tx);
|
||||
});
|
||||
|
||||
testCase([this](
|
||||
@@ -1361,10 +1361,9 @@ class Vault_test : public beast::unit_test::suite
|
||||
.amount = asset(100)});
|
||||
env(tx);
|
||||
|
||||
// Cannot delete an empty vault, because its shares are
|
||||
// (transitively, by asset) locked.
|
||||
// Can delete an empty vault even when asset is locked.
|
||||
tx = vault.del({.owner = owner, .id = keylet.key});
|
||||
env(tx, ter{tecNO_PERMISSION});
|
||||
env(tx);
|
||||
});
|
||||
|
||||
{
|
||||
@@ -1802,12 +1801,6 @@ class Vault_test : public beast::unit_test::suite
|
||||
env(tx1);
|
||||
env.close();
|
||||
|
||||
// Cannot delete an empty vault, because its shares are
|
||||
// (transitively, by asset) locked.
|
||||
auto tx2 = vault.del({.owner = owner, .id = keylet.key});
|
||||
env(tx2, ter{tecNO_PERMISSION});
|
||||
env.close();
|
||||
|
||||
tx0[jss::Flags] = tfClearFreeze;
|
||||
env(tx0);
|
||||
env.close();
|
||||
@@ -1928,10 +1921,9 @@ class Vault_test : public beast::unit_test::suite
|
||||
env(tx3);
|
||||
env.close();
|
||||
|
||||
// Cannot delete an empty vault, because its shares are
|
||||
// (transitively, by asset) locked.
|
||||
// Can delete an empty vault, even under asset is under global lock
|
||||
auto tx4 = vault.del({.owner = owner, .id = keylet.key});
|
||||
env(tx4, ter{tecNO_PERMISSION});
|
||||
env(tx4);
|
||||
env.close();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -73,23 +73,19 @@ MPTokenAuthorize::preclaim(PreclaimContext const& ctx)
|
||||
if (!sleMpt)
|
||||
return tecOBJECT_NOT_FOUND;
|
||||
|
||||
auto const sleMptIssuance =
|
||||
ctx.view.read(keylet::mptIssuance(ctx.tx[sfMPTokenIssuanceID]));
|
||||
if ((*sleMpt)[sfMPTAmount] != 0)
|
||||
{
|
||||
auto const sleMptIssuance = ctx.view.read(
|
||||
keylet::mptIssuance(ctx.tx[sfMPTokenIssuanceID]));
|
||||
if (!sleMptIssuance)
|
||||
return tefINTERNAL;
|
||||
|
||||
return tecHAS_OBLIGATIONS;
|
||||
}
|
||||
|
||||
if (ctx.view.rules().enabled(featureSingleAssetVault))
|
||||
{
|
||||
if (sleMptIssuance && sleMptIssuance->isFlag(lsfMPTLocked))
|
||||
return tecNO_PERMISSION;
|
||||
else if (sleMpt->isFlag(lsfMPTLocked))
|
||||
return tecNO_PERMISSION;
|
||||
}
|
||||
if (ctx.view.rules().enabled(featureSingleAssetVault) &&
|
||||
sleMpt->isFlag(lsfMPTLocked))
|
||||
return tecNO_PERMISSION;
|
||||
|
||||
return tesSUCCESS;
|
||||
}
|
||||
|
||||
@@ -1344,17 +1344,6 @@ removeEmptyHolding(
|
||||
if (line->at(sfBalance)->iou() != beast::zero)
|
||||
return tecHAS_OBLIGATIONS;
|
||||
|
||||
if (view.rules().enabled(featureSingleAssetVault))
|
||||
{
|
||||
// Check frozen flag, disallow delete if set
|
||||
if (auto const issuer = view.read(keylet::account(issue.account));
|
||||
issuer && issuer->isFlag(lsfGlobalFreeze))
|
||||
return tecNO_PERMISSION;
|
||||
if (line->isFlag(
|
||||
(issue.account > accountID) ? lsfHighFreeze : lsfLowFreeze))
|
||||
return tecNO_PERMISSION;
|
||||
}
|
||||
|
||||
// Adjust the owner count(s)
|
||||
if (line->isFlag(lsfLowReserve))
|
||||
{
|
||||
@@ -1405,14 +1394,6 @@ removeEmptyHolding(
|
||||
return tecOBJECT_NOT_FOUND;
|
||||
if (mptoken->at(sfMPTAmount) != 0)
|
||||
return tecHAS_OBLIGATIONS;
|
||||
if (view.rules().enabled(featureSingleAssetVault))
|
||||
{
|
||||
auto const sleIssuance = view.read(keylet::mptIssuance(mptID));
|
||||
if (sleIssuance && sleIssuance->isFlag(lsfMPTLocked))
|
||||
return tecNO_PERMISSION;
|
||||
else if (mptoken->isFlag(lsfMPTLocked))
|
||||
return tecNO_PERMISSION;
|
||||
}
|
||||
|
||||
return MPTokenAuthorize::authorize(
|
||||
view,
|
||||
|
||||
Reference in New Issue
Block a user