Skip to content

Commit e8b215a

Browse files
committed
Refactor test for existing peer connection into own function
1 parent 4fe338a commit e8b215a

File tree

2 files changed

+12
-1
lines changed

2 files changed

+12
-1
lines changed

src/net.cpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -354,6 +354,11 @@ CNode* CConnman::FindNode(const CService& addr)
354354
return nullptr;
355355
}
356356

357+
bool CConnman::AlreadyConnectedToAddress(const CAddress& addr)
358+
{
359+
return FindNode(static_cast<CNetAddr>(addr)) || FindNode(addr.ToStringIPPort());
360+
}
361+
357362
bool CConnman::CheckIncomingNonce(uint64_t nonce)
358363
{
359364
LOCK(cs_vNodes);
@@ -2160,7 +2165,7 @@ void CConnman::OpenNetworkConnection(const CAddress& addrConnect, bool fCountFai
21602165
}
21612166
if (!pszDest) {
21622167
bool banned_or_discouraged = m_banman && (m_banman->IsDiscouraged(addrConnect) || m_banman->IsBanned(addrConnect));
2163-
if (IsLocal(addrConnect) || FindNode(static_cast<CNetAddr>(addrConnect)) || banned_or_discouraged || FindNode(addrConnect.ToStringIPPort())) {
2168+
if (IsLocal(addrConnect) || banned_or_discouraged || AlreadyConnectedToAddress(addrConnect)) {
21642169
return;
21652170
}
21662171
} else if (FindNode(std::string(pszDest)))

src/net.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -442,6 +442,12 @@ class CConnman
442442
CNode* FindNode(const std::string& addrName);
443443
CNode* FindNode(const CService& addr);
444444

445+
/**
446+
* Determine whether we're already connected to a given address, in order to
447+
* avoid initiating duplicate connections.
448+
*/
449+
bool AlreadyConnectedToAddress(const CAddress& addr);
450+
445451
bool AttemptToEvictConnection();
446452
CNode* ConnectNode(CAddress addrConnect, const char *pszDest, bool fCountFailure, ConnectionType conn_type);
447453
void AddWhitelistPermissionFlags(NetPermissionFlags& flags, const CNetAddr &addr) const;

0 commit comments

Comments
 (0)