diff --git a/src/net.cpp b/src/net.cpp index 2ff539a18e8..7637f8854c3 100644 --- a/src/net.cpp +++ b/src/net.cpp @@ -1491,12 +1491,14 @@ void ThreadOpenConnections2(void* parg) CAddress addrConnect; int64 nBest = std::numeric_limits::min(); - // Only connect to one address per a.b.?.? range. + // Only connect out to one peer per network group (/16 for IPv4). // Do this here so we don't have to critsect vNodes inside mapAddresses critsect. set setConnected; CRITICAL_BLOCK(cs_vNodes) BOOST_FOREACH(CNode* pnode, vNodes) - setConnected.insert(pnode->addr.ip & 0x0000ffff); + if (!pnode->fInbound) { + setConnected.insert(pnode->addr.ip & 0x0000ffff); + } CRITICAL_BLOCK(cs_mapAddresses) {