mirror of
https://github.com/monero-project/monero.git
synced 2026-08-03 01:15:55 -07:00
Allow the number of incoming connections to be limited
It was already possible to limit outgoing connections. One might want to do this on home network connections with high bandwidth but low usage caps.
This commit is contained in:
@@ -428,6 +428,23 @@ bool t_command_parser_executor::out_peers(const std::vector<std::string>& args)
|
||||
return m_executor.out_peers(limit);
|
||||
}
|
||||
|
||||
bool t_command_parser_executor::in_peers(const std::vector<std::string>& args)
|
||||
{
|
||||
if (args.empty()) return false;
|
||||
|
||||
unsigned int limit;
|
||||
try {
|
||||
limit = std::stoi(args[0]);
|
||||
}
|
||||
|
||||
catch(const std::exception& ex) {
|
||||
_erro("stoi exception");
|
||||
return false;
|
||||
}
|
||||
|
||||
return m_executor.in_peers(limit);
|
||||
}
|
||||
|
||||
bool t_command_parser_executor::start_save_graph(const std::vector<std::string>& args)
|
||||
{
|
||||
if (!args.empty()) return false;
|
||||
|
||||
@@ -108,7 +108,9 @@ public:
|
||||
bool set_limit_down(const std::vector<std::string>& args);
|
||||
|
||||
bool out_peers(const std::vector<std::string>& args);
|
||||
|
||||
|
||||
bool in_peers(const std::vector<std::string>& args);
|
||||
|
||||
bool start_save_graph(const std::vector<std::string>& args);
|
||||
|
||||
bool stop_save_graph(const std::vector<std::string>& args);
|
||||
|
||||
@@ -196,6 +196,12 @@ t_command_server::t_command_server(
|
||||
, "out_peers <max_number>"
|
||||
, "Set the <max_number> of out peers."
|
||||
);
|
||||
m_command_lookup.set_handler(
|
||||
"in_peers"
|
||||
, std::bind(&t_command_parser_executor::in_peers, &m_parser, p::_1)
|
||||
, "in_peers <max_number>"
|
||||
, "Set the <max_number> of in peers."
|
||||
);
|
||||
m_command_lookup.set_handler(
|
||||
"start_save_graph"
|
||||
, std::bind(&t_command_parser_executor::start_save_graph, &m_parser, p::_1)
|
||||
|
||||
@@ -1281,6 +1281,38 @@ bool t_rpc_command_executor::out_peers(uint64_t limit)
|
||||
return true;
|
||||
}
|
||||
|
||||
bool t_rpc_command_executor::in_peers(uint64_t limit)
|
||||
{
|
||||
cryptonote::COMMAND_RPC_IN_PEERS::request req;
|
||||
cryptonote::COMMAND_RPC_IN_PEERS::response res;
|
||||
|
||||
epee::json_rpc::error error_resp;
|
||||
|
||||
req.in_peers = limit;
|
||||
|
||||
std::string fail_message = "Unsuccessful";
|
||||
|
||||
if (m_is_rpc)
|
||||
{
|
||||
if (!m_rpc_client->json_rpc_request(req, res, "in_peers", fail_message.c_str()))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!m_rpc_server->on_in_peers(req, res) || res.status != CORE_RPC_STATUS_OK)
|
||||
{
|
||||
tools::fail_msg_writer() << make_error(fail_message, res.status);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
std::cout << "Max number of in peers set to " << limit << std::endl;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool t_rpc_command_executor::start_save_graph()
|
||||
{
|
||||
cryptonote::COMMAND_RPC_START_SAVE_GRAPH::request req;
|
||||
|
||||
@@ -122,7 +122,9 @@ public:
|
||||
bool set_limit(int64_t limit_down, int64_t limit_up);
|
||||
|
||||
bool out_peers(uint64_t limit);
|
||||
|
||||
|
||||
bool in_peers(uint64_t limit);
|
||||
|
||||
bool start_save_graph();
|
||||
|
||||
bool stop_save_graph();
|
||||
|
||||
Reference in New Issue
Block a user