mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-06-09 22:28:51 +02:00
net: merge AlreadyConnectedToAddress() and FindNode(CNetAddr)
`CConnman::AlreadyConnectedToAddress()` is the only caller of `CConnman::FindNode(CNetAddr)`, so merge the two in one function. The unit test that checked whether `AlreadyConnectedToAddress()` ignores the port is now unnecessary because now the function takes a `CNetAddr` argument. It has no access to the port.
This commit is contained in:
16
src/net.cpp
16
src/net.cpp
@@ -331,17 +331,6 @@ bool IsLocal(const CService& addr)
|
|||||||
return mapLocalHost.count(addr) > 0;
|
return mapLocalHost.count(addr) > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
CNode* CConnman::FindNode(const CNetAddr& ip)
|
|
||||||
{
|
|
||||||
LOCK(m_nodes_mutex);
|
|
||||||
for (CNode* pnode : m_nodes) {
|
|
||||||
if (static_cast<CNetAddr>(pnode->addr) == ip) {
|
|
||||||
return pnode;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return nullptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
CNode* CConnman::FindNode(const std::string& addrName)
|
CNode* CConnman::FindNode(const std::string& addrName)
|
||||||
{
|
{
|
||||||
LOCK(m_nodes_mutex);
|
LOCK(m_nodes_mutex);
|
||||||
@@ -364,9 +353,10 @@ CNode* CConnman::FindNode(const CService& addr)
|
|||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CConnman::AlreadyConnectedToAddress(const CAddress& addr)
|
bool CConnman::AlreadyConnectedToAddress(const CNetAddr& addr) const
|
||||||
{
|
{
|
||||||
return FindNode(static_cast<CNetAddr>(addr));
|
LOCK(m_nodes_mutex);
|
||||||
|
return std::ranges::any_of(m_nodes, [&addr](CNode* node) { return node->addr == addr; });
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CConnman::CheckIncomingNonce(uint64_t nonce)
|
bool CConnman::CheckIncomingNonce(uint64_t nonce)
|
||||||
|
|||||||
@@ -1365,15 +1365,13 @@ private:
|
|||||||
|
|
||||||
uint64_t CalculateKeyedNetGroup(const CNetAddr& ad) const;
|
uint64_t CalculateKeyedNetGroup(const CNetAddr& ad) const;
|
||||||
|
|
||||||
CNode* FindNode(const CNetAddr& ip);
|
|
||||||
CNode* FindNode(const std::string& addrName);
|
CNode* FindNode(const std::string& addrName);
|
||||||
CNode* FindNode(const CService& addr);
|
CNode* FindNode(const CService& addr);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Determine whether we're already connected to a given address, in order to
|
* Determine whether we're already connected to a given address.
|
||||||
* avoid initiating duplicate connections.
|
|
||||||
*/
|
*/
|
||||||
bool AlreadyConnectedToAddress(const CAddress& addr);
|
bool AlreadyConnectedToAddress(const CNetAddr& addr) const;
|
||||||
|
|
||||||
bool AttemptToEvictConnection();
|
bool AttemptToEvictConnection();
|
||||||
CNode* ConnectNode(CAddress addrConnect, const char *pszDest, bool fCountFailure, ConnectionType conn_type, bool use_v2transport) EXCLUSIVE_LOCKS_REQUIRED(!m_unused_i2p_sessions_mutex);
|
CNode* ConnectNode(CAddress addrConnect, const char *pszDest, bool fCountFailure, ConnectionType conn_type, bool use_v2transport) EXCLUSIVE_LOCKS_REQUIRED(!m_unused_i2p_sessions_mutex);
|
||||||
|
|||||||
@@ -151,15 +151,8 @@ BOOST_FIXTURE_TEST_CASE(test_addnode_getaddednodeinfo_and_connection_detection,
|
|||||||
}
|
}
|
||||||
|
|
||||||
BOOST_TEST_MESSAGE("\nCheck that all connected peers are correctly detected as connected");
|
BOOST_TEST_MESSAGE("\nCheck that all connected peers are correctly detected as connected");
|
||||||
for (auto node : connman->TestNodes()) {
|
for (const auto& node : connman->TestNodes()) {
|
||||||
BOOST_CHECK(connman->AlreadyConnectedPublic(node->addr));
|
BOOST_CHECK(connman->AlreadyConnectedToAddressPublic(node->addr));
|
||||||
}
|
|
||||||
|
|
||||||
BOOST_TEST_MESSAGE("\nCheck that peers with the same addresses as connected peers but different ports are detected as connected.");
|
|
||||||
for (auto node : connman->TestNodes()) {
|
|
||||||
uint16_t changed_port = node->addr.GetPort() + 1;
|
|
||||||
CService address_with_changed_port{node->addr, changed_port};
|
|
||||||
BOOST_CHECK(connman->AlreadyConnectedPublic(CAddress{address_with_changed_port, NODE_NONE}));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Clean up
|
// Clean up
|
||||||
|
|||||||
@@ -89,7 +89,7 @@ struct ConnmanTestMsg : public CConnman {
|
|||||||
bool ReceiveMsgFrom(CNode& node, CSerializedNetMsg&& ser_msg) const;
|
bool ReceiveMsgFrom(CNode& node, CSerializedNetMsg&& ser_msg) const;
|
||||||
void FlushSendBuffer(CNode& node) const;
|
void FlushSendBuffer(CNode& node) const;
|
||||||
|
|
||||||
bool AlreadyConnectedPublic(const CAddress& addr) { return AlreadyConnectedToAddress(addr); };
|
bool AlreadyConnectedToAddressPublic(const CNetAddr& addr) { return AlreadyConnectedToAddress(addr); };
|
||||||
|
|
||||||
CNode* ConnectNodePublic(PeerManager& peerman, const char* pszDest, ConnectionType conn_type)
|
CNode* ConnectNodePublic(PeerManager& peerman, const char* pszDest, ConnectionType conn_type)
|
||||||
EXCLUSIVE_LOCKS_REQUIRED(!m_unused_i2p_sessions_mutex);
|
EXCLUSIVE_LOCKS_REQUIRED(!m_unused_i2p_sessions_mutex);
|
||||||
|
|||||||
Reference in New Issue
Block a user