Merge pull request #9382

356829a Daemon RPC: high_height_ok req boolean field /getblocks.bin (j-berman)
This commit is contained in:
luigi1111 2024-07-16 19:00:06 -04:00
commit 4ed5bc5436
No known key found for this signature in database
GPG Key ID: F4ACA0183641E010
2 changed files with 13 additions and 3 deletions

View File

@ -702,12 +702,20 @@ namespace cryptonote
if (get_blocks) if (get_blocks)
{ {
// quick check for noop // quick check for noop
if (!req.block_ids.empty()) if (req.start_height > 0 || !req.block_ids.empty())
{ {
uint64_t last_block_height; uint64_t last_block_height;
crypto::hash last_block_hash; crypto::hash last_block_hash;
m_core.get_blockchain_top(last_block_height, last_block_hash); m_core.get_blockchain_top(last_block_height, last_block_hash);
if (last_block_hash == req.block_ids.front())
if (!req.high_height_ok && req.start_height > last_block_height)
{
res.status = "Failed";
return true;
}
if (req.start_height > last_block_height ||
(!req.block_ids.empty() && last_block_hash == req.block_ids.front()))
{ {
res.start_height = 0; res.start_height = 0;
res.current_height = last_block_height + 1; res.current_height = last_block_height + 1;

View File

@ -101,7 +101,7 @@ inline const std::string get_rpc_status(const bool trusted_daemon, const std::st
// advance which version they will stop working with // advance which version they will stop working with
// Don't go over 32767 for any of these // Don't go over 32767 for any of these
#define CORE_RPC_VERSION_MAJOR 3 #define CORE_RPC_VERSION_MAJOR 3
#define CORE_RPC_VERSION_MINOR 14 #define CORE_RPC_VERSION_MINOR 15
#define MAKE_CORE_RPC_VERSION(major,minor) (((major)<<16)|(minor)) #define MAKE_CORE_RPC_VERSION(major,minor) (((major)<<16)|(minor))
#define CORE_RPC_VERSION MAKE_CORE_RPC_VERSION(CORE_RPC_VERSION_MAJOR, CORE_RPC_VERSION_MINOR) #define CORE_RPC_VERSION MAKE_CORE_RPC_VERSION(CORE_RPC_VERSION_MAJOR, CORE_RPC_VERSION_MINOR)
@ -189,6 +189,7 @@ inline const std::string get_rpc_status(const bool trusted_daemon, const std::st
uint64_t start_height; uint64_t start_height;
bool prune; bool prune;
bool no_miner_tx; bool no_miner_tx;
bool high_height_ok;
uint64_t pool_info_since; uint64_t pool_info_since;
BEGIN_KV_SERIALIZE_MAP() BEGIN_KV_SERIALIZE_MAP()
KV_SERIALIZE_PARENT(rpc_access_request_base) KV_SERIALIZE_PARENT(rpc_access_request_base)
@ -197,6 +198,7 @@ inline const std::string get_rpc_status(const bool trusted_daemon, const std::st
KV_SERIALIZE(start_height) KV_SERIALIZE(start_height)
KV_SERIALIZE(prune) KV_SERIALIZE(prune)
KV_SERIALIZE_OPT(no_miner_tx, false) KV_SERIALIZE_OPT(no_miner_tx, false)
KV_SERIALIZE_OPT(high_height_ok, false) // default false maintains backwards compatibility for clients that relied on failure on high height
KV_SERIALIZE_OPT(pool_info_since, (uint64_t)0) KV_SERIALIZE_OPT(pool_info_since, (uint64_t)0)
END_KV_SERIALIZE_MAP() END_KV_SERIALIZE_MAP()
}; };