p2p: make REQUEST_SUPPORT_FLAGS optional, pass flags in node data

removes a back and forth on connect, and the RPC can be removed
once all peers have updated
This commit is contained in:
moneromooo-monero 2021-01-03 15:07:15 +00:00
parent 16c780d568
commit f815740403
No known key found for this signature in database
GPG Key ID: 686F07454D6CEFC3
2 changed files with 15 additions and 8 deletions

View File

@ -1155,6 +1155,7 @@ namespace nodetool
pi = context.peer_id = rsp.node_data.peer_id; pi = context.peer_id = rsp.node_data.peer_id;
context.m_rpc_port = rsp.node_data.rpc_port; context.m_rpc_port = rsp.node_data.rpc_port;
context.m_rpc_credits_per_hash = rsp.node_data.rpc_credits_per_hash; context.m_rpc_credits_per_hash = rsp.node_data.rpc_credits_per_hash;
context.support_flags = rsp.node_data.support_flags;
const auto azone = context.m_remote_address.get_zone(); const auto azone = context.m_remote_address.get_zone();
network_zone& zone = m_network_zones.at(azone); network_zone& zone = m_network_zones.at(azone);
zone.m_peerlist.set_peer_just_seen(rsp.node_data.peer_id, context.m_remote_address, context.m_pruning_seed, context.m_rpc_port, context.m_rpc_credits_per_hash); zone.m_peerlist.set_peer_just_seen(rsp.node_data.peer_id, context.m_remote_address, context.m_pruning_seed, context.m_rpc_port, context.m_rpc_credits_per_hash);
@ -1188,6 +1189,7 @@ namespace nodetool
} }
else if (!just_take_peerlist) else if (!just_take_peerlist)
{ {
if (context_.support_flags == 0)
try_get_support_flags(context_, [](p2p_connection_context& flags_context, const uint32_t& support_flags) try_get_support_flags(context_, [](p2p_connection_context& flags_context, const uint32_t& support_flags)
{ {
flags_context.support_flags = support_flags; flags_context.support_flags = support_flags;
@ -2166,6 +2168,7 @@ namespace nodetool
node_data.rpc_port = zone.m_can_pingback ? m_rpc_port : 0; node_data.rpc_port = zone.m_can_pingback ? m_rpc_port : 0;
node_data.rpc_credits_per_hash = zone.m_can_pingback ? m_rpc_credits_per_hash : 0; node_data.rpc_credits_per_hash = zone.m_can_pingback ? m_rpc_credits_per_hash : 0;
node_data.network_id = m_network_id; node_data.network_id = m_network_id;
node_data.support_flags = zone.m_config.m_support_flags;
return true; return true;
} }
//----------------------------------------------------------------------------------- //-----------------------------------------------------------------------------------
@ -2534,6 +2537,7 @@ namespace nodetool
context.m_in_timedsync = false; context.m_in_timedsync = false;
context.m_rpc_port = arg.node_data.rpc_port; context.m_rpc_port = arg.node_data.rpc_port;
context.m_rpc_credits_per_hash = arg.node_data.rpc_credits_per_hash; context.m_rpc_credits_per_hash = arg.node_data.rpc_credits_per_hash;
context.support_flags = arg.node_data.support_flags;
if(arg.node_data.my_port && zone.m_can_pingback) if(arg.node_data.my_port && zone.m_can_pingback)
{ {
@ -2567,6 +2571,7 @@ namespace nodetool
}); });
} }
if (context.support_flags == 0)
try_get_support_flags(context, [](p2p_connection_context& flags_context, const uint32_t& support_flags) try_get_support_flags(context, [](p2p_connection_context& flags_context, const uint32_t& support_flags)
{ {
flags_context.support_flags = support_flags; flags_context.support_flags = support_flags;

View File

@ -188,6 +188,7 @@ namespace nodetool
uint16_t rpc_port; uint16_t rpc_port;
uint32_t rpc_credits_per_hash; uint32_t rpc_credits_per_hash;
peerid_type peer_id; peerid_type peer_id;
uint32_t support_flags;
BEGIN_KV_SERIALIZE_MAP() BEGIN_KV_SERIALIZE_MAP()
KV_SERIALIZE_VAL_POD_AS_BLOB(network_id) KV_SERIALIZE_VAL_POD_AS_BLOB(network_id)
@ -195,6 +196,7 @@ namespace nodetool
KV_SERIALIZE(my_port) KV_SERIALIZE(my_port)
KV_SERIALIZE_OPT(rpc_port, (uint16_t)(0)) KV_SERIALIZE_OPT(rpc_port, (uint16_t)(0))
KV_SERIALIZE_OPT(rpc_credits_per_hash, (uint32_t)0) KV_SERIALIZE_OPT(rpc_credits_per_hash, (uint32_t)0)
KV_SERIALIZE_OPT(support_flags, (uint32_t)0)
END_KV_SERIALIZE_MAP() END_KV_SERIALIZE_MAP()
}; };