mirror of
https://codeberg.org/anoncontributorxmr/monero.git
synced 2024-11-22 15:32:24 +00:00
p2p: close the right number of connections on setting max in/out peers
This commit is contained in:
parent
fcbf7b3f74
commit
098aadf084
2 changed files with 26 additions and 2 deletions
|
@ -99,6 +99,8 @@ public:
|
|||
template<class callback_t>
|
||||
bool for_connection(const boost::uuids::uuid &connection_id, const callback_t &cb);
|
||||
size_t get_connections_count();
|
||||
size_t get_out_connections_count();
|
||||
size_t get_in_connections_count();
|
||||
void set_handler(levin_commands_handler<t_connection_context>* handler, void (*destroy)(levin_commands_handler<t_connection_context>*) = NULL);
|
||||
|
||||
async_protocol_handler_config():m_pcommands_handler(NULL), m_pcommands_handler_destroy(NULL), m_max_packet_size(LEVIN_DEFAULT_MAX_PACKET_SIZE), m_invoke_timeout(LEVIN_DEFAULT_TIMEOUT_PRECONFIGURED)
|
||||
|
@ -882,6 +884,28 @@ size_t async_protocol_handler_config<t_connection_context>::get_connections_coun
|
|||
}
|
||||
//------------------------------------------------------------------------------------------
|
||||
template<class t_connection_context>
|
||||
size_t async_protocol_handler_config<t_connection_context>::get_out_connections_count()
|
||||
{
|
||||
CRITICAL_REGION_LOCAL(m_connects_lock);
|
||||
size_t count = 0;
|
||||
for (const auto &c: m_connects)
|
||||
if (!c.second->m_connection_context.m_is_income)
|
||||
++count;
|
||||
return count;
|
||||
}
|
||||
//------------------------------------------------------------------------------------------
|
||||
template<class t_connection_context>
|
||||
size_t async_protocol_handler_config<t_connection_context>::get_in_connections_count()
|
||||
{
|
||||
CRITICAL_REGION_LOCAL(m_connects_lock);
|
||||
size_t count = 0;
|
||||
for (const auto &c: m_connects)
|
||||
if (c.second->m_connection_context.m_is_income)
|
||||
++count;
|
||||
return count;
|
||||
}
|
||||
//------------------------------------------------------------------------------------------
|
||||
template<class t_connection_context>
|
||||
void async_protocol_handler_config<t_connection_context>::set_handler(levin_commands_handler<t_connection_context>* handler, void (*destroy)(levin_commands_handler<t_connection_context>*))
|
||||
{
|
||||
if (m_pcommands_handler && m_pcommands_handler_destroy)
|
||||
|
|
|
@ -2209,7 +2209,7 @@ namespace nodetool
|
|||
auto public_zone = m_network_zones.find(epee::net_utils::zone::public_);
|
||||
if (public_zone != m_network_zones.end())
|
||||
{
|
||||
const auto current = public_zone->second.m_config.m_net_config.max_out_connection_count;
|
||||
const auto current = public_zone->second.m_net_server.get_config_object().get_out_connections_count();
|
||||
public_zone->second.m_config.m_net_config.max_out_connection_count = count;
|
||||
if(current > count)
|
||||
public_zone->second.m_net_server.get_config_object().del_out_connections(current - count);
|
||||
|
@ -2223,7 +2223,7 @@ namespace nodetool
|
|||
auto public_zone = m_network_zones.find(epee::net_utils::zone::public_);
|
||||
if (public_zone != m_network_zones.end())
|
||||
{
|
||||
const auto current = public_zone->second.m_config.m_net_config.max_in_connection_count;
|
||||
const auto current = public_zone->second.m_net_server.get_config_object().get_in_connections_count();
|
||||
public_zone->second.m_config.m_net_config.max_in_connection_count = count;
|
||||
if(current > count)
|
||||
public_zone->second.m_net_server.get_config_object().del_in_connections(current - count);
|
||||
|
|
Loading…
Reference in a new issue