mirror of
https://github.com/monero-project/monero.git
synced 2024-12-24 12:39:59 +00:00
Don't cache nettype in core_rpc_server use m_core
This can go out of sync with m_core's nettype if you run in fakechain mode since entering fakechain mode is done through code not the command line and core_rpc_server only looks at the command line to figure out the nettype.
This commit is contained in:
parent
d0c4123034
commit
6f2497bc7a
4 changed files with 21 additions and 22 deletions
|
@ -75,18 +75,15 @@ public:
|
||||||
protocol.set_p2p_endpoint(p2p.get());
|
protocol.set_p2p_endpoint(p2p.get());
|
||||||
core.set_protocol(protocol.get());
|
core.set_protocol(protocol.get());
|
||||||
|
|
||||||
const auto testnet = command_line::get_arg(vm, cryptonote::arg_testnet_on);
|
|
||||||
const auto stagenet = command_line::get_arg(vm, cryptonote::arg_stagenet_on);
|
|
||||||
const auto regtest = command_line::get_arg(vm, cryptonote::arg_regtest_on);
|
|
||||||
const auto restricted = command_line::get_arg(vm, cryptonote::core_rpc_server::arg_restricted_rpc);
|
const auto restricted = command_line::get_arg(vm, cryptonote::core_rpc_server::arg_restricted_rpc);
|
||||||
const auto main_rpc_port = command_line::get_arg(vm, cryptonote::core_rpc_server::arg_rpc_bind_port);
|
const auto main_rpc_port = command_line::get_arg(vm, cryptonote::core_rpc_server::arg_rpc_bind_port);
|
||||||
rpcs.emplace_back(new t_rpc{vm, core, p2p, restricted, testnet ? cryptonote::TESTNET : stagenet ? cryptonote::STAGENET : regtest ? cryptonote::FAKECHAIN : cryptonote::MAINNET, main_rpc_port, "core"});
|
rpcs.emplace_back(new t_rpc{vm, core, p2p, restricted, main_rpc_port, "core"});
|
||||||
|
|
||||||
auto restricted_rpc_port_arg = cryptonote::core_rpc_server::arg_rpc_restricted_bind_port;
|
auto restricted_rpc_port_arg = cryptonote::core_rpc_server::arg_rpc_restricted_bind_port;
|
||||||
if(!command_line::is_arg_defaulted(vm, restricted_rpc_port_arg))
|
if(!command_line::is_arg_defaulted(vm, restricted_rpc_port_arg))
|
||||||
{
|
{
|
||||||
auto restricted_rpc_port = command_line::get_arg(vm, restricted_rpc_port_arg);
|
auto restricted_rpc_port = command_line::get_arg(vm, restricted_rpc_port_arg);
|
||||||
rpcs.emplace_back(new t_rpc{vm, core, p2p, true, testnet ? cryptonote::TESTNET : stagenet ? cryptonote::STAGENET : cryptonote::MAINNET, restricted_rpc_port, "restricted"});
|
rpcs.emplace_back(new t_rpc{vm, core, p2p, true, restricted_rpc_port, "restricted"});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
@ -54,7 +54,6 @@ public:
|
||||||
, t_core & core
|
, t_core & core
|
||||||
, t_p2p & p2p
|
, t_p2p & p2p
|
||||||
, const bool restricted
|
, const bool restricted
|
||||||
, const cryptonote::network_type nettype
|
|
||||||
, const std::string & port
|
, const std::string & port
|
||||||
, const std::string & description
|
, const std::string & description
|
||||||
)
|
)
|
||||||
|
@ -62,7 +61,7 @@ public:
|
||||||
{
|
{
|
||||||
MGINFO("Initializing " << m_description << " RPC server...");
|
MGINFO("Initializing " << m_description << " RPC server...");
|
||||||
|
|
||||||
if (!m_server.init(vm, restricted, nettype, port))
|
if (!m_server.init(vm, restricted, port))
|
||||||
{
|
{
|
||||||
throw std::runtime_error("Failed to initialize " + m_description + " RPC server.");
|
throw std::runtime_error("Failed to initialize " + m_description + " RPC server.");
|
||||||
}
|
}
|
||||||
|
|
|
@ -91,12 +91,10 @@ namespace cryptonote
|
||||||
bool core_rpc_server::init(
|
bool core_rpc_server::init(
|
||||||
const boost::program_options::variables_map& vm
|
const boost::program_options::variables_map& vm
|
||||||
, const bool restricted
|
, const bool restricted
|
||||||
, const network_type nettype
|
|
||||||
, const std::string& port
|
, const std::string& port
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
m_restricted = restricted;
|
m_restricted = restricted;
|
||||||
m_nettype = nettype;
|
|
||||||
m_net_server.set_threads_prefix("RPC");
|
m_net_server.set_threads_prefix("RPC");
|
||||||
|
|
||||||
auto rpc_config = cryptonote::rpc_args::process(vm);
|
auto rpc_config = cryptonote::rpc_args::process(vm);
|
||||||
|
@ -191,10 +189,13 @@ namespace cryptonote
|
||||||
res.rpc_connections_count = get_connections_count();
|
res.rpc_connections_count = get_connections_count();
|
||||||
res.white_peerlist_size = m_p2p.get_peerlist_manager().get_white_peers_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.grey_peerlist_size = m_p2p.get_peerlist_manager().get_gray_peers_count();
|
||||||
res.mainnet = m_nettype == MAINNET;
|
|
||||||
res.testnet = m_nettype == TESTNET;
|
cryptonote::network_type net_type = nettype();
|
||||||
res.stagenet = m_nettype == STAGENET;
|
res.mainnet = net_type == MAINNET;
|
||||||
res.nettype = m_nettype == MAINNET ? "mainnet" : m_nettype == TESTNET ? "testnet" : m_nettype == STAGENET ? "stagenet" : "fakechain";
|
res.testnet = net_type == TESTNET;
|
||||||
|
res.stagenet = net_type == STAGENET;
|
||||||
|
res.nettype = net_type == MAINNET ? "mainnet" : net_type == TESTNET ? "testnet" : net_type == STAGENET ? "stagenet" : "fakechain";
|
||||||
|
|
||||||
res.cumulative_difficulty = m_core.get_blockchain_storage().get_db().get_block_cumulative_difficulty(res.height - 1);
|
res.cumulative_difficulty = m_core.get_blockchain_storage().get_db().get_block_cumulative_difficulty(res.height - 1);
|
||||||
res.block_size_limit = res.block_weight_limit = m_core.get_blockchain_storage().get_current_cumulative_block_weight_limit();
|
res.block_size_limit = res.block_weight_limit = m_core.get_blockchain_storage().get_current_cumulative_block_weight_limit();
|
||||||
res.block_size_median = res.block_weight_median = m_core.get_blockchain_storage().get_current_cumulative_block_weight_median();
|
res.block_size_median = res.block_weight_median = m_core.get_blockchain_storage().get_current_cumulative_block_weight_median();
|
||||||
|
@ -750,7 +751,7 @@ namespace cryptonote
|
||||||
PERF_TIMER(on_start_mining);
|
PERF_TIMER(on_start_mining);
|
||||||
CHECK_CORE_READY();
|
CHECK_CORE_READY();
|
||||||
cryptonote::address_parse_info info;
|
cryptonote::address_parse_info info;
|
||||||
if(!get_account_address_from_str(info, m_nettype, req.miner_address))
|
if(!get_account_address_from_str(info, nettype(), req.miner_address))
|
||||||
{
|
{
|
||||||
res.status = "Failed, wrong address";
|
res.status = "Failed, wrong address";
|
||||||
LOG_PRINT_L0(res.status);
|
LOG_PRINT_L0(res.status);
|
||||||
|
@ -831,7 +832,7 @@ namespace cryptonote
|
||||||
res.speed = lMiner.get_speed();
|
res.speed = lMiner.get_speed();
|
||||||
res.threads_count = lMiner.get_threads_count();
|
res.threads_count = lMiner.get_threads_count();
|
||||||
const account_public_address& lMiningAdr = lMiner.get_mining_address();
|
const account_public_address& lMiningAdr = lMiner.get_mining_address();
|
||||||
res.address = get_account_address_as_str(m_nettype, false, lMiningAdr);
|
res.address = get_account_address_as_str(nettype(), false, lMiningAdr);
|
||||||
}
|
}
|
||||||
|
|
||||||
res.status = CORE_RPC_STATUS_OK;
|
res.status = CORE_RPC_STATUS_OK;
|
||||||
|
@ -1064,7 +1065,7 @@ namespace cryptonote
|
||||||
|
|
||||||
cryptonote::address_parse_info info;
|
cryptonote::address_parse_info info;
|
||||||
|
|
||||||
if(!req.wallet_address.size() || !cryptonote::get_account_address_from_str(info, m_nettype, req.wallet_address))
|
if(!req.wallet_address.size() || !cryptonote::get_account_address_from_str(info, nettype(), req.wallet_address))
|
||||||
{
|
{
|
||||||
error_resp.code = CORE_RPC_ERROR_CODE_WRONG_WALLET_ADDRESS;
|
error_resp.code = CORE_RPC_ERROR_CODE_WRONG_WALLET_ADDRESS;
|
||||||
error_resp.message = "Failed to parse wallet address";
|
error_resp.message = "Failed to parse wallet address";
|
||||||
|
@ -1590,10 +1591,13 @@ namespace cryptonote
|
||||||
res.rpc_connections_count = get_connections_count();
|
res.rpc_connections_count = get_connections_count();
|
||||||
res.white_peerlist_size = m_p2p.get_peerlist_manager().get_white_peers_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.grey_peerlist_size = m_p2p.get_peerlist_manager().get_gray_peers_count();
|
||||||
res.mainnet = m_nettype == MAINNET;
|
|
||||||
res.testnet = m_nettype == TESTNET;
|
cryptonote::network_type net_type = nettype();
|
||||||
res.stagenet = m_nettype == STAGENET;
|
res.mainnet = net_type == MAINNET;
|
||||||
res.nettype = m_nettype == MAINNET ? "mainnet" : m_nettype == TESTNET ? "testnet" : m_nettype == STAGENET ? "stagenet" : "fakechain";
|
res.testnet = net_type == TESTNET;
|
||||||
|
res.stagenet = net_type == STAGENET;
|
||||||
|
res.nettype = net_type == MAINNET ? "mainnet" : net_type == TESTNET ? "testnet" : net_type == STAGENET ? "stagenet" : "fakechain";
|
||||||
|
|
||||||
res.cumulative_difficulty = m_core.get_blockchain_storage().get_db().get_block_cumulative_difficulty(res.height - 1);
|
res.cumulative_difficulty = m_core.get_blockchain_storage().get_db().get_block_cumulative_difficulty(res.height - 1);
|
||||||
res.block_size_limit = res.block_weight_limit = m_core.get_blockchain_storage().get_current_cumulative_block_weight_limit();
|
res.block_size_limit = res.block_weight_limit = m_core.get_blockchain_storage().get_current_cumulative_block_weight_limit();
|
||||||
res.block_size_median = res.block_weight_median = m_core.get_blockchain_storage().get_current_cumulative_block_weight_median();
|
res.block_size_median = res.block_weight_median = m_core.get_blockchain_storage().get_current_cumulative_block_weight_median();
|
||||||
|
|
|
@ -70,10 +70,9 @@ namespace cryptonote
|
||||||
bool init(
|
bool init(
|
||||||
const boost::program_options::variables_map& vm,
|
const boost::program_options::variables_map& vm,
|
||||||
const bool restricted,
|
const bool restricted,
|
||||||
const network_type nettype,
|
|
||||||
const std::string& port
|
const std::string& port
|
||||||
);
|
);
|
||||||
network_type nettype() const { return m_nettype; }
|
network_type nettype() const { return m_core.get_nettype(); }
|
||||||
|
|
||||||
CHAIN_HTTP_TO_MAP2(connection_context); //forward http requests to uri map
|
CHAIN_HTTP_TO_MAP2(connection_context); //forward http requests to uri map
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue