mirror of
https://codeberg.org/anoncontributorxmr/monero.git
synced 2024-11-30 06:43:28 +01:00
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;
|
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,10 +1189,11 @@ namespace nodetool
|
|||||||
}
|
}
|
||||||
else if (!just_take_peerlist)
|
else if (!just_take_peerlist)
|
||||||
{
|
{
|
||||||
try_get_support_flags(context_, [](p2p_connection_context& flags_context, const uint32_t& 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;
|
{
|
||||||
});
|
flags_context.support_flags = support_flags;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
return hsh_result;
|
return hsh_result;
|
||||||
@ -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,10 +2571,11 @@ namespace nodetool
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
try_get_support_flags(context, [](p2p_connection_context& flags_context, const uint32_t& 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;
|
{
|
||||||
});
|
flags_context.support_flags = support_flags;
|
||||||
|
});
|
||||||
|
|
||||||
//fill response
|
//fill response
|
||||||
zone.m_peerlist.get_peerlist_head(rsp.local_peerlist_new, true);
|
zone.m_peerlist.get_peerlist_head(rsp.local_peerlist_new, true);
|
||||||
|
@ -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()
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user