rpc: send confirmations in get_transactions result

if the wallet does it, it would get a wrong result (possibly even
negative) if its local chain is not synced up to the daemon's yet
This commit is contained in:
moneromooo-monero 2021-04-15 15:29:13 +00:00
parent f6279a633d
commit 4da1112967
No known key found for this signature in database
GPG key ID: 686F07454D6CEFC3
3 changed files with 19 additions and 5 deletions

View file

@ -11515,6 +11515,9 @@ void wallet2::check_tx_key_helper(const cryptonote::transaction &tx, const crypt
void wallet2::check_tx_key_helper(const crypto::hash &txid, const crypto::key_derivation &derivation, const std::vector<crypto::key_derivation> &additional_derivations, const cryptonote::account_public_address &address, uint64_t &received, bool &in_pool, uint64_t &confirmations)
{
uint32_t rpc_version;
THROW_WALLET_EXCEPTION_IF(!check_connection(&rpc_version), error::wallet_internal_error, "Failed to connect to daemon: " + get_daemon_address());
COMMAND_RPC_GET_TRANSACTIONS::request req;
COMMAND_RPC_GET_TRANSACTIONS::response res;
req.txs_hashes.push_back(epee::string_tools::pod_to_hex(txid));
@ -11560,10 +11563,17 @@ void wallet2::check_tx_key_helper(const crypto::hash &txid, const crypto::key_de
confirmations = 0;
if (!in_pool)
{
std::string err;
uint64_t bc_height = get_daemon_blockchain_height(err);
if (err.empty())
confirmations = bc_height - res.txs.front().block_height;
if (rpc_version < MAKE_CORE_RPC_VERSION(3, 7))
{
std::string err;
uint64_t bc_height = get_daemon_blockchain_height(err);
if (err.empty() && bc_height > res.txs.front().block_height)
confirmations = bc_height - res.txs.front().block_height;
}
else
{
confirmations = res.txs.front().confirmations;
}
}
}