From a44d94d390158a04db9bfd84bacd5ca1d7233ba0 Mon Sep 17 00:00:00 2001 From: moneromooo-monero Date: Tue, 5 Jan 2016 21:57:43 +0000 Subject: rpc: is_key_image_spent now checks the tx pool too --- src/rpc/core_rpc_server.cpp | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) (limited to 'src/rpc/core_rpc_server.cpp') diff --git a/src/rpc/core_rpc_server.cpp b/src/rpc/core_rpc_server.cpp index e6973b0b8..021c12d6e 100644 --- a/src/rpc/core_rpc_server.cpp +++ b/src/rpc/core_rpc_server.cpp @@ -304,7 +304,37 @@ namespace cryptonote } res.spent_status.clear(); for (size_t n = 0; n < spent_status.size(); ++n) - res.spent_status.push_back(spent_status[n]); + res.spent_status.push_back(spent_status[n] ? COMMAND_RPC_IS_KEY_IMAGE_SPENT::SPENT_IN_BLOCKCHAIN : COMMAND_RPC_IS_KEY_IMAGE_SPENT::UNSPENT); + + // check the pool too + std::vector txs; + std::vector ki; + r = m_core.get_pool_transactions_and_spent_keys_info(txs, ki); + if(!r) + { + res.status = "Failed"; + return true; + } + for (std::vector::const_iterator i = ki.begin(); i != ki.end(); ++i) + { + crypto::hash hash; + crypto::key_image spent_key_image; + if (parse_hash256(i->id_hash, hash)) + { + memcpy(&spent_key_image, &hash, sizeof(hash)); // a bit dodgy, should be other parse functions somewhere + for (size_t n = 0; n < res.spent_status.size(); ++n) + { + if (res.spent_status[n] == COMMAND_RPC_IS_KEY_IMAGE_SPENT::UNSPENT) + { + if (key_images[n] == spent_key_image) + { + res.spent_status[n] = COMMAND_RPC_IS_KEY_IMAGE_SPENT::SPENT_IN_POOL; + break; + } + } + } + } + } res.status = CORE_RPC_STATUS_OK; return true; -- cgit v1.2.3 From 664dc42e18539d1222eb5007c1e0a74c84df20ef Mon Sep 17 00:00:00 2001 From: moneromooo-monero Date: Mon, 11 Jan 2016 22:52:01 +0000 Subject: rpc: fix missing target information in RPC call which fixes the status command via RPC too. Turns out there are two versions of the GET_INFO call. I'd never noticed before. --- src/rpc/core_rpc_server.cpp | 2 ++ src/rpc/core_rpc_server_commands_defs.h | 1 + 2 files changed, 3 insertions(+) (limited to 'src/rpc/core_rpc_server.cpp') diff --git a/src/rpc/core_rpc_server.cpp b/src/rpc/core_rpc_server.cpp index 021c12d6e..0f9e2b3ab 100644 --- a/src/rpc/core_rpc_server.cpp +++ b/src/rpc/core_rpc_server.cpp @@ -902,6 +902,7 @@ namespace cryptonote res.height = m_core.get_current_blockchain_height(); res.target_height = m_core.get_target_blockchain_height(); res.difficulty = m_core.get_blockchain_storage().get_difficulty_for_next_block(); + res.target = m_core.get_blockchain_storage().get_current_hard_fork_version() < 2 ? DIFFICULTY_TARGET_V1 : DIFFICULTY_TARGET; res.tx_count = m_core.get_blockchain_storage().get_total_transactions() - res.height; //without coinbase res.tx_pool_size = m_core.get_pool_transactions_count(); res.alt_blocks_count = m_core.get_blockchain_storage().get_alternative_blocks_count(); @@ -910,6 +911,7 @@ namespace cryptonote res.incoming_connections_count = total_conn - res.outgoing_connections_count; res.white_peerlist_size = m_p2p.get_peerlist_manager().get_white_peers_count(); res.grey_peerlist_size = m_p2p.get_peerlist_manager().get_gray_peers_count(); + res.testnet = m_testnet; res.status = CORE_RPC_STATUS_OK; return true; } diff --git a/src/rpc/core_rpc_server_commands_defs.h b/src/rpc/core_rpc_server_commands_defs.h index dcacffbb9..772d1d942 100644 --- a/src/rpc/core_rpc_server_commands_defs.h +++ b/src/rpc/core_rpc_server_commands_defs.h @@ -295,6 +295,7 @@ namespace cryptonote KV_SERIALIZE(height) KV_SERIALIZE(target_height) KV_SERIALIZE(difficulty) + KV_SERIALIZE(target) KV_SERIALIZE(tx_count) KV_SERIALIZE(tx_pool_size) KV_SERIALIZE(alt_blocks_count) -- cgit v1.2.3