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:
parent
16c780d568
commit
f815740403
|
@ -1155,6 +1155,7 @@ namespace nodetool
|
|||
pi = context.peer_id = rsp.node_data.peer_id;
|
||||
context.m_rpc_port = rsp.node_data.rpc_port;
|
||||
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();
|
||||
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);
|
||||
|
@ -1188,10 +1189,11 @@ namespace nodetool
|
|||
}
|
||||
else if (!just_take_peerlist)
|
||||
{
|
||||
try_get_support_flags(context_, [](p2p_connection_context& flags_context, const uint32_t& support_flags)
|
||||
{
|
||||
flags_context.support_flags = support_flags;
|
||||
});
|
||||
if (context_.support_flags == 0)
|
||||
try_get_support_flags(context_, [](p2p_connection_context& flags_context, const uint32_t& support_flags)
|
||||
{
|
||||
flags_context.support_flags = support_flags;
|
||||
});
|
||||
}
|
||||
|
||||
return hsh_result;
|
||||
|
@ -2166,6 +2168,7 @@ namespace nodetool
|
|||
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.network_id = m_network_id;
|
||||
node_data.support_flags = zone.m_config.m_support_flags;
|
||||
return true;
|
||||
}
|
||||
//-----------------------------------------------------------------------------------
|
||||
|
@ -2534,6 +2537,7 @@ namespace nodetool
|
|||
context.m_in_timedsync = false;
|
||||
context.m_rpc_port = arg.node_data.rpc_port;
|
||||
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)
|
||||
{
|
||||
|
@ -2567,10 +2571,11 @@ namespace nodetool
|
|||
});
|
||||
}
|
||||
|
||||
try_get_support_flags(context, [](p2p_connection_context& flags_context, const uint32_t& support_flags)
|
||||
{
|
||||
flags_context.support_flags = support_flags;
|
||||
});
|
||||
if (context.support_flags == 0)
|
||||
try_get_support_flags(context, [](p2p_connection_context& flags_context, const uint32_t& support_flags)
|
||||
{
|
||||
flags_context.support_flags = support_flags;
|
||||
});
|
||||
|
||||
//fill response
|
||||
zone.m_peerlist.get_peerlist_head(rsp.local_peerlist_new, true);
|
||||
|
|
|
@ -188,6 +188,7 @@ namespace nodetool
|
|||
uint16_t rpc_port;
|
||||
uint32_t rpc_credits_per_hash;
|
||||
peerid_type peer_id;
|
||||
uint32_t support_flags;
|
||||
|
||||
BEGIN_KV_SERIALIZE_MAP()
|
||||
KV_SERIALIZE_VAL_POD_AS_BLOB(network_id)
|
||||
|
@ -195,6 +196,7 @@ namespace nodetool
|
|||
KV_SERIALIZE(my_port)
|
||||
KV_SERIALIZE_OPT(rpc_port, (uint16_t)(0))
|
||||
KV_SERIALIZE_OPT(rpc_credits_per_hash, (uint32_t)0)
|
||||
KV_SERIALIZE_OPT(support_flags, (uint32_t)0)
|
||||
END_KV_SERIALIZE_MAP()
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in New Issue