From 17e7528e2c1cd0e9f48eec462bef570b9a04164b Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Tue, 27 Oct 2015 10:40:31 -0700 Subject: [PATCH] More root cleanup. --- node/Topology.cpp | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/node/Topology.cpp b/node/Topology.cpp index 49854f0e5..7bb4b4491 100644 --- a/node/Topology.cpp +++ b/node/Topology.cpp @@ -191,7 +191,6 @@ void Topology::saveIdentity(const Identity &id) SharedPtr Topology::getBestRoot(const Address *avoid,unsigned int avoidCount,bool strictAvoid) { - SharedPtr bestRoot; const uint64_t now = RR->node->now(); Mutex::Lock _l(_lock); @@ -207,8 +206,8 @@ SharedPtr Topology::getBestRoot(const Address *avoid,unsigned int avoidCou for(unsigned long q=1;q<_rootAddresses.size();++q) { SharedPtr *nextsn = _peers.get(_rootAddresses[(p + q) % _rootAddresses.size()]); if ((nextsn)&&((*nextsn)->hasActiveDirectPath(now))) { - bestRoot = *nextsn; - break; + (*nextsn)->use(now); + return *nextsn; } } break; @@ -247,11 +246,13 @@ SharedPtr Topology::getBestRoot(const Address *avoid,unsigned int avoidCou } } - if (bestNotAvoid) + if (bestNotAvoid) { + (*bestNotAvoid)->use(now); return *bestNotAvoid; - else if ((!strictAvoid)&&(bestOverall)) + } else if ((!strictAvoid)&&(bestOverall)) { + (*bestOverall)->use(now); return *bestOverall; - return SharedPtr(); + } /* unsigned int l,bestLatency = 65536; @@ -315,10 +316,7 @@ keep_searching_for_roots: } */ } - - if (bestRoot) - bestRoot->use(now); - return bestRoot; + return SharedPtr(); } bool Topology::isUpstream(const Identity &id) const