diff options
author | Adam Ierymenko <adam.ierymenko@gmail.com> | 2015-04-07 12:32:05 -0700 |
---|---|---|
committer | Adam Ierymenko <adam.ierymenko@gmail.com> | 2015-04-07 12:32:05 -0700 |
commit | 0a906818494814f308f1c6a0c208aa8ed76ef52a (patch) | |
tree | d1e012b6fe514282adbc8ec203333b53deab2f19 | |
parent | 24608d5ca300762ad3f6df34ea277ecc8ddbf6f6 (diff) | |
download | infinitytier-0a906818494814f308f1c6a0c208aa8ed76ef52a.tar.gz infinitytier-0a906818494814f308f1c6a0c208aa8ed76ef52a.zip |
Add ping(), and a logic fix in SelfAwareness.
-rw-r--r-- | node/Peer.hpp | 17 | ||||
-rw-r--r-- | node/SelfAwareness.cpp | 4 |
2 files changed, 20 insertions, 1 deletions
diff --git a/node/Peer.hpp b/node/Peer.hpp index 4bea101b..ba02bfca 100644 --- a/node/Peer.hpp +++ b/node/Peer.hpp @@ -183,6 +183,23 @@ public: void attemptToContactAt(const RuntimeEnvironment *RR,const InetAddress &atAddress,unsigned int linkDesperation,uint64_t now); /** + * Send a HELLO to all active direct paths + * + * @param RR Runtime environment + * @param now Current time + */ + inline void ping(const RuntimeEnvironment *RR,uint64_t now) + { + unsigned int np = _numPaths; + for(unsigned int p=0;p<np;++p) { + if (_paths[p].active(now)) { + attemptToContactAt(RR,_paths[p].address(),_paths[p].desperation(now),now); + _paths[p].sent(now); + } + } + } + + /** * @return All known direct paths to this peer */ std::vector<Path> paths() const diff --git a/node/SelfAwareness.cpp b/node/SelfAwareness.cpp index 951c65e8..db0c5595 100644 --- a/node/SelfAwareness.cpp +++ b/node/SelfAwareness.cpp @@ -78,7 +78,9 @@ void SelfAwareness::iam(const InetAddress &reporterPhysicalAddress,const InetAdd else { Mutex::Lock _l(_lock); InetAddress &lastPhy = _lastPhysicalAddress[scope - 1]; - if ((lastPhy)&&(lastPhy != myPhysicalAddress)) { + if (!lastPhy) { + lastPhy = myPhysicalAddress; + } else if (lastPhy != myPhysicalAddress) { lastPhy = myPhysicalAddress; _ResetWithinScope rset(RR,RR->node->now(),(InetAddress::IpScope)scope); RR->topology->eachPeer<_ResetWithinScope &>(rset); |