From 67e451ec239c6da5fae0a14c13e65454c4500668 Mon Sep 17 00:00:00 2001 From: Sergey Kuznetsov Date: Thu, 13 Mar 2025 15:42:20 +0000 Subject: [PATCH] chore: Upgrade libxrpl to 2.4.0 (#1961) --- conanfile.py | 6 +++--- src/etl/ETLState.cpp | 7 ++----- src/etl/ETLState.hpp | 11 +++++++---- src/rpc/RPCHelpers.cpp | 2 +- tests/unit/rpc/RPCHelpersTests.cpp | 3 ++- 5 files changed, 15 insertions(+), 14 deletions(-) diff --git a/conanfile.py b/conanfile.py index 54b3eea45..d6e6144ab 100644 --- a/conanfile.py +++ b/conanfile.py @@ -23,13 +23,13 @@ class Clio(ConanFile): } requires = [ - 'boost/1.82.0', + 'boost/1.83.0', 'cassandra-cpp-driver/2.17.0', 'fmt/10.1.1', 'protobuf/3.21.9', 'grpc/1.50.1', - 'openssl/1.1.1u', - 'xrpl/2.4.0-rc4', + 'openssl/1.1.1v', + 'xrpl/2.4.0', 'zlib/1.3.1', 'libbacktrace/cci.20210118' ] diff --git a/src/etl/ETLState.cpp b/src/etl/ETLState.cpp index f506f0091..cd0bbe0f8 100644 --- a/src/etl/ETLState.cpp +++ b/src/etl/ETLState.cpp @@ -31,15 +31,12 @@ namespace etl { -std::optional -tag_invoke(boost::json::value_to_tag>, boost::json::value const& jv) +ETLState +tag_invoke(boost::json::value_to_tag, boost::json::value const& jv) { ETLState state; auto const& jsonObject = jv.as_object(); - if (jsonObject.contains(JS(error))) - return std::nullopt; - if (jsonObject.contains(JS(result)) && jsonObject.at(JS(result)).as_object().contains(JS(info))) { auto const rippledInfo = jsonObject.at(JS(result)).as_object().at(JS(info)).as_object(); if (rippledInfo.contains(JS(network_id))) diff --git a/src/etl/ETLState.hpp b/src/etl/ETLState.hpp index d9183f24b..0302aab5f 100644 --- a/src/etl/ETLState.hpp +++ b/src/etl/ETLState.hpp @@ -20,12 +20,14 @@ #pragma once #include "data/BackendInterface.hpp" +#include "rpc/JS.hpp" #include #include #include #include #include +#include #include #include @@ -54,8 +56,9 @@ struct ETLState { return std::nullopt; }); - if (serverInfoRippled) - return boost::json::value_to>(boost::json::value(*serverInfoRippled)); + if (serverInfoRippled && not serverInfoRippled->contains(JS(error))) { + return boost::json::value_to(boost::json::value(*serverInfoRippled)); + } return std::nullopt; } @@ -67,7 +70,7 @@ struct ETLState { * @param jv The json value to convert * @return The ETLState */ -std::optional -tag_invoke(boost::json::value_to_tag>, boost::json::value const& jv); +ETLState +tag_invoke(boost::json::value_to_tag, boost::json::value const& jv); } // namespace etl diff --git a/src/rpc/RPCHelpers.cpp b/src/rpc/RPCHelpers.cpp index c67a8269b..651b84120 100644 --- a/src/rpc/RPCHelpers.cpp +++ b/src/rpc/RPCHelpers.cpp @@ -385,7 +385,7 @@ insertDeliverMaxAlias(boost::json::object& txJson, std::uint32_t const apiVersio { if (txJson.contains(JS(TransactionType)) and txJson.at(JS(TransactionType)).is_string() and txJson.at(JS(TransactionType)).as_string() == JS(Payment) and txJson.contains(JS(Amount))) { - txJson[JS(DeliverMax)] = txJson[JS(Amount)]; + txJson.insert_or_assign(JS(DeliverMax), txJson[JS(Amount)]); if (apiVersion > 1) txJson.erase(JS(Amount)); } diff --git a/tests/unit/rpc/RPCHelpersTests.cpp b/tests/unit/rpc/RPCHelpersTests.cpp index 3a5c8c58f..cfc0c7e03 100644 --- a/tests/unit/rpc/RPCHelpersTests.cpp +++ b/tests/unit/rpc/RPCHelpersTests.cpp @@ -419,7 +419,8 @@ TEST_F(RPCHelpersTest, DeliverMaxAliasV1) for (size_t i = 0; i < inputArray.size(); i++) { auto req = boost::json::parse(inputArray[i]).as_object(); insertDeliverMaxAlias(req, 1); - EXPECT_EQ(req, boost::json::parse(outputArray[i]).as_object()); + auto const expectedReq = boost::json::parse(outputArray[i]).as_object(); + EXPECT_EQ(req, expectedReq) << req << "\n" << expectedReq; } }