mirror of
https://github.com/Retropex/bitcoin.git
synced 2025-08-04 05:54:48 +02:00
p2p, bugfix: correctly detect CJDNS addnode entries in AddNode()
Rebased-From: 28823f30dc
This commit is contained in:
parent
6cb66cd455
commit
b5efac03db
11
src/net.cpp
11
src/net.cpp
@ -3447,12 +3447,17 @@ std::vector<CAddress> CConnman::GetAddresses(CNode& requestor, size_t max_addres
|
||||
|
||||
bool CConnman::AddNode(const AddedNodeParams& add)
|
||||
{
|
||||
const CService resolved(LookupNumeric(add.m_added_node, GetDefaultPort(add.m_added_node)));
|
||||
const bool resolved_is_valid{resolved.IsValid()};
|
||||
const CService resolved{MaybeFlipIPv6toCJDNS(LookupNumeric(add.m_added_node, GetDefaultPort(add.m_added_node)))};
|
||||
const bool resolved_invalid{!resolved.IsValid()};
|
||||
|
||||
LOCK(m_added_nodes_mutex);
|
||||
for (const auto& it : m_added_node_params) {
|
||||
if (add.m_added_node == it.m_added_node || (resolved_is_valid && resolved == LookupNumeric(it.m_added_node, GetDefaultPort(it.m_added_node)))) return false;
|
||||
if (add.m_added_node == it.m_added_node) return false;
|
||||
if (resolved_invalid) continue;
|
||||
const CService service{MaybeFlipIPv6toCJDNS(LookupNumeric(it.m_added_node, GetDefaultPort(it.m_added_node)))};
|
||||
if (resolved == service) return false;
|
||||
// Check if CJDNS address matches regardless of port to detect already-connected inbound peers.
|
||||
if (resolved.IsCJDNS() && static_cast<CNetAddr>(resolved) == static_cast<CNetAddr>(service)) return false;
|
||||
}
|
||||
|
||||
m_added_node_params.push_back(add);
|
||||
|
Loading…
Reference in New Issue
Block a user