mirror of
https://github.com/Xahau/xahaud.git
synced 2025-12-06 17:27:52 +00:00
Correct delivered_amount reporting for minor ledgers (RIPD-1051)
The existing delivered_amount logic will erroneously report unavailable for ledgers that aren't in the network's live chain because it is based solely on ledger sequence number. This adds a check based on the ledger close time to permit the code to give correct results in standalone mode and on test networks.
This commit is contained in:
@@ -18,6 +18,7 @@
|
|||||||
//==============================================================================
|
//==============================================================================
|
||||||
|
|
||||||
#include <ripple/rpc/impl/Utilities.h>
|
#include <ripple/rpc/impl/Utilities.h>
|
||||||
|
#include <ripple/app/ledger/LedgerMaster.h>
|
||||||
#include <ripple/app/misc/Transaction.h>
|
#include <ripple/app/misc/Transaction.h>
|
||||||
#include <ripple/json/json_value.h>
|
#include <ripple/json/json_value.h>
|
||||||
#include <ripple/protocol/JsonFields.h>
|
#include <ripple/protocol/JsonFields.h>
|
||||||
@@ -65,6 +66,19 @@ addPaymentDeliveredAmount (
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// If the ledger closed long after the DeliveredAmount code was deployed
|
||||||
|
// then its absence indicates that the amount delivered is listed in the
|
||||||
|
// Amount field. DeliveredAmount went live January 24, 2014.
|
||||||
|
auto ct =
|
||||||
|
context.ledgerMaster.getCloseTimeBySeq (transaction->getLedger ());
|
||||||
|
if (ct && (*ct > 446000000))
|
||||||
|
{
|
||||||
|
// 446000000 is in Feb 2014, well after DeliveredAmount went live
|
||||||
|
meta[jss::delivered_amount] =
|
||||||
|
serializedTx->getFieldAmount (sfAmount).getJson (1);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// Otherwise we report "unavailable" which cannot be parsed into a
|
// Otherwise we report "unavailable" which cannot be parsed into a
|
||||||
// sensible amount.
|
// sensible amount.
|
||||||
meta[jss::delivered_amount] = Json::Value ("unavailable");
|
meta[jss::delivered_amount] = Json::Value ("unavailable");
|
||||||
|
|||||||
Reference in New Issue
Block a user