diff options
author | luigi1111 <luigi1111w@gmail.com> | 2024-07-16 19:00:39 -0400 |
---|---|---|
committer | luigi1111 <luigi1111w@gmail.com> | 2024-07-16 19:00:39 -0400 |
commit | 330212888a31e083f61dbe41957f1cf8f3e6a624 (patch) | |
tree | 4afb80dc9e22d5bf845077dd61801340b3325680 /src/rpc | |
parent | Merge pull request #9382 (diff) | |
parent | Daemon RPC: /getblocks.bin return chain's top_block_hash in resp (diff) | |
download | monero-330212888a31e083f61dbe41957f1cf8f3e6a624.tar.xz |
Merge pull request #9383
9f83e74 Daemon RPC: /getblocks.bin return chain's top_block_hash in resp (j-berman)
Diffstat (limited to 'src/rpc')
-rw-r--r-- | src/rpc/core_rpc_server.cpp | 3 | ||||
-rw-r--r-- | src/rpc/core_rpc_server_commands_defs.h | 2 | ||||
-rw-r--r-- | src/rpc/daemon_handler.cpp | 2 | ||||
-rw-r--r-- | src/rpc/daemon_messages.h | 1 |
4 files changed, 6 insertions, 2 deletions
diff --git a/src/rpc/core_rpc_server.cpp b/src/rpc/core_rpc_server.cpp index e6e65889e..7fcd1e6d7 100644 --- a/src/rpc/core_rpc_server.cpp +++ b/src/rpc/core_rpc_server.cpp @@ -719,6 +719,7 @@ namespace cryptonote { res.start_height = 0; res.current_height = last_block_height + 1; + res.top_block_hash = last_block_hash; res.status = CORE_RPC_STATUS_OK; return true; } @@ -738,7 +739,7 @@ namespace cryptonote } std::vector<std::pair<std::pair<cryptonote::blobdata, crypto::hash>, std::vector<std::pair<crypto::hash, cryptonote::blobdata> > > > bs; - if(!m_core.find_blockchain_supplement(req.start_height, req.block_ids, bs, res.current_height, res.start_height, req.prune, !req.no_miner_tx, max_blocks, COMMAND_RPC_GET_BLOCKS_FAST_MAX_TX_COUNT)) + if(!m_core.find_blockchain_supplement(req.start_height, req.block_ids, bs, res.current_height, res.top_block_hash, res.start_height, req.prune, !req.no_miner_tx, max_blocks, COMMAND_RPC_GET_BLOCKS_FAST_MAX_TX_COUNT)) { res.status = "Failed"; add_host_fail(ctx); diff --git a/src/rpc/core_rpc_server_commands_defs.h b/src/rpc/core_rpc_server_commands_defs.h index 6b5d08e6a..1c8525d45 100644 --- a/src/rpc/core_rpc_server_commands_defs.h +++ b/src/rpc/core_rpc_server_commands_defs.h @@ -247,6 +247,7 @@ inline const std::string get_rpc_status(const bool trusted_daemon, const std::st std::vector<block_complete_entry> blocks; uint64_t start_height; uint64_t current_height; + crypto::hash top_block_hash; std::vector<block_output_indices> output_indices; uint64_t daemon_time; uint8_t pool_info_extent; @@ -259,6 +260,7 @@ inline const std::string get_rpc_status(const bool trusted_daemon, const std::st KV_SERIALIZE(blocks) KV_SERIALIZE(start_height) KV_SERIALIZE(current_height) + KV_SERIALIZE_VAL_POD_AS_BLOB_OPT(top_block_hash, crypto::null_hash) KV_SERIALIZE(output_indices) KV_SERIALIZE_OPT(daemon_time, (uint64_t) 0) KV_SERIALIZE_OPT(pool_info_extent, (uint8_t) 0) diff --git a/src/rpc/daemon_handler.cpp b/src/rpc/daemon_handler.cpp index 9ed2cb660..fac061cad 100644 --- a/src/rpc/daemon_handler.cpp +++ b/src/rpc/daemon_handler.cpp @@ -128,7 +128,7 @@ namespace rpc { std::vector<std::pair<std::pair<blobdata, crypto::hash>, std::vector<std::pair<crypto::hash, blobdata> > > > blocks; - if(!m_core.find_blockchain_supplement(req.start_height, req.block_ids, blocks, res.current_height, res.start_height, req.prune, true, COMMAND_RPC_GET_BLOCKS_FAST_MAX_BLOCK_COUNT, COMMAND_RPC_GET_BLOCKS_FAST_MAX_TX_COUNT)) + if(!m_core.find_blockchain_supplement(req.start_height, req.block_ids, blocks, res.current_height, res.top_block_hash, res.start_height, req.prune, true, COMMAND_RPC_GET_BLOCKS_FAST_MAX_BLOCK_COUNT, COMMAND_RPC_GET_BLOCKS_FAST_MAX_TX_COUNT)) { res.status = Message::STATUS_FAILED; res.error_details = "core::find_blockchain_supplement() returned false"; diff --git a/src/rpc/daemon_messages.h b/src/rpc/daemon_messages.h index 383665cfc..83546fce3 100644 --- a/src/rpc/daemon_messages.h +++ b/src/rpc/daemon_messages.h @@ -97,6 +97,7 @@ BEGIN_RPC_MESSAGE_CLASS(GetBlocksFast); RPC_MESSAGE_MEMBER(std::vector<cryptonote::rpc::block_with_transactions>, blocks); RPC_MESSAGE_MEMBER(uint64_t, start_height); RPC_MESSAGE_MEMBER(uint64_t, current_height); + RPC_MESSAGE_MEMBER(crypto::hash, top_block_hash); RPC_MESSAGE_MEMBER(std::vector<cryptonote::rpc::block_output_indices>, output_indices); END_RPC_MESSAGE_RESPONSE; END_RPC_MESSAGE_CLASS; |