mirror of
https://github.com/XRPLF/rippled.git
synced 2025-11-19 10:35:50 +00:00
Compare commits
15 Commits
0.30.1-rc2
...
0.30.1-hf1
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f0624581d1 | ||
|
|
cb23352a35 | ||
|
|
9fea06ad84 | ||
|
|
2beeb9a293 | ||
|
|
c717006c44 | ||
|
|
fd33d693c4 | ||
|
|
31ecb4dcf3 | ||
|
|
5a4e900a21 | ||
|
|
5062e65277 | ||
|
|
bd44880d5a | ||
|
|
ad2383bd4b | ||
|
|
5b5a01989c | ||
|
|
c17f7e8b37 | ||
|
|
5f4fe9fccb | ||
|
|
db9885e1fc |
@@ -799,6 +799,19 @@ TER PathState::checkNoRipple (
|
||||
if (terStatus != tesSUCCESS)
|
||||
return terStatus;
|
||||
}
|
||||
|
||||
if (!nodes_[i - 1].isAccount() &&
|
||||
nodes_[i].isAccount() &&
|
||||
nodes_[i + 1].isAccount() &&
|
||||
nodes_[i -1].issue_.account != nodes_[i].account_)
|
||||
{ // offer -> account -> account
|
||||
auto const& currencyID = nodes_[i].issue_.currency;
|
||||
terStatus = checkNoRipple (
|
||||
nodes_[i-1].issue_.account, nodes_[i].account_, nodes_[i+1].account_,
|
||||
currencyID);
|
||||
if (terStatus != tesSUCCESS)
|
||||
return terStatus;
|
||||
}
|
||||
}
|
||||
|
||||
return tesSUCCESS;
|
||||
|
||||
@@ -32,7 +32,7 @@ namespace {
|
||||
static
|
||||
TER
|
||||
deleteOffers (ApplyView& view,
|
||||
OfferSet const& offers, beast::Journal j)
|
||||
std::set<uint256> const& offers, beast::Journal j)
|
||||
{
|
||||
for (auto& e: offers)
|
||||
if (TER r = offerDelete (view,
|
||||
@@ -201,7 +201,7 @@ TER RippleCalc::rippleCalculate ()
|
||||
getRate (saDstAmountReq_, saMaxAmountReq_) : 0;
|
||||
|
||||
// Offers that became unfunded.
|
||||
OfferSet unfundedOffersFromBestPaths;
|
||||
std::set<uint256> unfundedOffersFromBestPaths;
|
||||
|
||||
int iPass = 0;
|
||||
|
||||
|
||||
@@ -106,10 +106,10 @@ public:
|
||||
PaymentSandbox& view;
|
||||
|
||||
// If the transaction fails to meet some constraint, still need to delete
|
||||
// unfunded offers.
|
||||
// unfunded offers in a deterministic order (hence the ordered container).
|
||||
//
|
||||
// Offers that were found unfunded.
|
||||
path::OfferSet permanentlyUnfundedOffers_;
|
||||
std::set<uint256> permanentlyUnfundedOffers_;
|
||||
|
||||
// First time working in reverse a funding source was mentioned. Source may
|
||||
// only be used there.
|
||||
|
||||
@@ -30,8 +30,6 @@ namespace path {
|
||||
|
||||
using NodeIndex = unsigned int;
|
||||
|
||||
using OfferSet = hash_set <uint256>;
|
||||
|
||||
}
|
||||
|
||||
using AccountIssueToNodeIndex = hash_map <AccountIssue, path::NodeIndex>;
|
||||
|
||||
@@ -35,7 +35,7 @@ char const* getRawVersionString ()
|
||||
//
|
||||
// The build version number (edit this for each release)
|
||||
//
|
||||
"0.30.1-rc2"
|
||||
"0.30.1-hf1"
|
||||
//
|
||||
// Must follow the format described here:
|
||||
//
|
||||
|
||||
@@ -163,7 +163,7 @@ Json::Value doAccountTx (RPC::Context& context)
|
||||
{
|
||||
auto meta = it.second->getJson (1);
|
||||
addPaymentDeliveredAmount (meta, context, it.first, it.second);
|
||||
jvObj[jss::meta] = meta;
|
||||
jvObj[jss::meta] = std::move(meta);
|
||||
|
||||
std::uint32_t uLedgerIndex = it.second->getLgrSeq ();
|
||||
|
||||
|
||||
@@ -29,6 +29,7 @@
|
||||
#include <ripple/resource/Fees.h>
|
||||
#include <ripple/rpc/Context.h>
|
||||
#include <ripple/rpc/impl/LookupLedger.h>
|
||||
#include <ripple/rpc/impl/Utilities.h>
|
||||
#include <ripple/server/Role.h>
|
||||
|
||||
namespace ripple {
|
||||
@@ -183,7 +184,10 @@ Json::Value doAccountTxOld (RPC::Context& context)
|
||||
{
|
||||
std::uint32_t uLedgerIndex = it->second->getLgrSeq ();
|
||||
|
||||
jvObj[jss::meta] = it->second->getJson (0);
|
||||
auto meta = it->second->getJson(0);
|
||||
addPaymentDeliveredAmount(meta, context, it->first, it->second);
|
||||
jvObj[jss::meta] = std::move(meta);
|
||||
|
||||
jvObj[jss::validated]
|
||||
= bValidated
|
||||
&& uValidatedMin <= uLedgerIndex
|
||||
|
||||
@@ -39,20 +39,29 @@ addPaymentDeliveredAmount (
|
||||
{
|
||||
// We only want to add a "delivered_amount" field if the transaction
|
||||
// succeeded - otherwise nothing could have been delivered.
|
||||
if (!transaction || transaction->getResult () != tesSUCCESS)
|
||||
if (! transaction)
|
||||
return;
|
||||
|
||||
auto serializedTx = transaction->getSTransaction ();
|
||||
|
||||
if (!serializedTx || serializedTx->getTxnType () != ttPAYMENT)
|
||||
if (! serializedTx || serializedTx->getTxnType () != ttPAYMENT)
|
||||
return;
|
||||
|
||||
// If the transaction explicitly specifies a DeliveredAmount in the
|
||||
// metadata then we use it.
|
||||
if (transactionMeta && transactionMeta->hasDeliveredAmount ())
|
||||
if (transactionMeta)
|
||||
{
|
||||
if (transactionMeta->getResultTER() != tesSUCCESS)
|
||||
return;
|
||||
|
||||
// If the transaction explicitly specifies a DeliveredAmount in the
|
||||
// metadata then we use it.
|
||||
if (transactionMeta->hasDeliveredAmount ())
|
||||
{
|
||||
meta[jss::delivered_amount] =
|
||||
transactionMeta->getDeliveredAmount ().getJson (1);
|
||||
return;
|
||||
}
|
||||
}
|
||||
else if (transaction->getResult() != tesSUCCESS)
|
||||
{
|
||||
meta[jss::delivered_amount] =
|
||||
transactionMeta->getDeliveredAmount ().getJson (1);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user