]> Git Repo - VerusCoin.git/commitdiff
Use network group instead of CNetAddr in final pass to select node to disconnect
authorPatrick Strateman <[email protected]>
Wed, 26 Aug 2015 00:06:15 +0000 (17:06 -0700)
committerTaylor Hornby <[email protected]>
Tue, 16 Aug 2016 01:38:34 +0000 (19:38 -0600)
src/net.cpp

index 392bbec87198430e387d16a216bed925b23ff3b4..c2a202b2f90eb1bc997ee4e0ae0fbc9b40d9dcb4 100644 (file)
@@ -794,29 +794,29 @@ static bool AttemptToEvictConnection(bool fPreferNewConnection) {
 
     if (vEvictionCandidates.empty()) return false;
 
-    // Identify CNetAddr with the most connections
-    CNetAddr naMostConnections;
+    // Identify the network group with the most connections
+    std::vector<unsigned char> naMostConnections;
     unsigned int nMostConnections = 0;
-    std::map<CNetAddr, std::vector<CNodeRef> > mapAddrCounts;
+    std::map<std::vector<unsigned char>, std::vector<CNodeRef> > mapAddrCounts;
     BOOST_FOREACH(const CNodeRef &node, vEvictionCandidates) {
-        mapAddrCounts[node->addr].push_back(node);
+        mapAddrCounts[node->addr.GetGroup()].push_back(node);
 
-        if (mapAddrCounts[node->addr].size() > nMostConnections) {
-            nMostConnections = mapAddrCounts[node->addr].size();
-            naMostConnections = node->addr;
+        if (mapAddrCounts[node->addr.GetGroup()].size() > nMostConnections) {
+            nMostConnections = mapAddrCounts[node->addr.GetGroup()].size();
+            naMostConnections = node->addr.GetGroup();
         }
     }
 
-    // Reduce to the CNetAddr with the most connections
+    // Reduce to the network group with the most connections
     vEvictionCandidates = mapAddrCounts[naMostConnections];
 
-    // Do not disconnect peers who have only 1 evictable connection
+    // Do not disconnect peers if there is only 1 connection from their network group
     if (vEvictionCandidates.size() <= 1)
         // unless we prefer the new connection (for whitelisted peers)
         if (!fPreferNewConnection)
             return false;
 
-    // Disconnect the most recent connection from the CNetAddr with the most connections
+    // Disconnect the most recent connection from the network group with the most connections
     std::sort(vEvictionCandidates.begin(), vEvictionCandidates.end(), ReverseCompareNodeTimeConnected);
     vEvictionCandidates[0]->fDisconnect = true;
 
This page took 0.029083 seconds and 4 git commands to generate.