diff --git a/src/rpc/RPCHelpers.cpp b/src/rpc/RPCHelpers.cpp index cdd19e1a..e68c089f 100644 --- a/src/rpc/RPCHelpers.cpp +++ b/src/rpc/RPCHelpers.cpp @@ -296,7 +296,8 @@ std::optional getDeliveredAmount( std::shared_ptr const& txn, std::shared_ptr const& meta, - std::uint32_t const ledgerSequence) + std::uint32_t const ledgerSequence, + uint32_t date) { if (meta->hasDeliveredAmount()) return meta->getDeliveredAmount(); @@ -312,7 +313,7 @@ getDeliveredAmount( // then its absence indicates that the amount delivered is listed in the // Amount field. DeliveredAmount went live January 24, 2014. // 446000000 is in Feb 2014, well after DeliveredAmount went live - if (ledgerSequence >= 4594095) + if (ledgerSequence >= 4594095 || date > 446000000) { return txn->getFieldAmount(ripple::sfAmount); } @@ -458,7 +459,7 @@ toExpandedJson(Backend::TransactionAndMetadata const& blobs) auto [txn, meta] = deserializeTxPlusMeta(blobs, blobs.ledgerSequence); auto txnJson = toJson(*txn); auto metaJson = toJson(*meta); - insertDeliveredAmount(metaJson, txn, meta); + insertDeliveredAmount(metaJson, txn, meta, blobs.date); return {txnJson, metaJson}; } @@ -466,11 +467,12 @@ bool insertDeliveredAmount( boost::json::object& metaJson, std::shared_ptr const& txn, - std::shared_ptr const& meta) + std::shared_ptr const& meta, + uint32_t date) { if (canHaveDeliveredAmount(txn, meta)) { - if (auto amt = getDeliveredAmount(txn, meta, meta->getLgrSeq())) + if (auto amt = getDeliveredAmount(txn, meta, meta->getLgrSeq(), date)) metaJson["delivered_amount"] = toBoostJson(amt->getJson(ripple::JsonOptions::include_date)); else diff --git a/src/rpc/RPCHelpers.h b/src/rpc/RPCHelpers.h index 50823bd0..12171123 100644 --- a/src/rpc/RPCHelpers.h +++ b/src/rpc/RPCHelpers.h @@ -62,7 +62,8 @@ bool insertDeliveredAmount( boost::json::object& metaJson, std::shared_ptr const& txn, - std::shared_ptr const& meta); + std::shared_ptr const& meta, + uint32_t date); boost::json::object toJson(ripple::STBase const& obj); diff --git a/src/subscriptions/SubscriptionManager.cpp b/src/subscriptions/SubscriptionManager.cpp index 7cca7f5d..03262829 100644 --- a/src/subscriptions/SubscriptionManager.cpp +++ b/src/subscriptions/SubscriptionManager.cpp @@ -257,7 +257,8 @@ SubscriptionManager::pubTransaction( boost::json::object pubObj; pubObj["transaction"] = RPC::toJson(*tx); pubObj["meta"] = RPC::toJson(*meta); - RPC::insertDeliveredAmount(pubObj["meta"].as_object(), tx, meta); + RPC::insertDeliveredAmount( + pubObj["meta"].as_object(), tx, meta, blobs.date); pubObj["type"] = "transaction"; pubObj["validated"] = true; pubObj["status"] = "closed";