summaryrefslogtreecommitdiff
path: root/node/Cluster.cpp
diff options
context:
space:
mode:
authorAdam Ierymenko <adam.ierymenko@gmail.com>2015-10-20 16:31:41 -0700
committerAdam Ierymenko <adam.ierymenko@gmail.com>2015-10-20 16:31:41 -0700
commit59e1444b274465f33ed95aab6a9214d25910f85d (patch)
tree344ae25a56f2e5b087e90d021334d98d6a8aa4a0 /node/Cluster.cpp
parenteb79d4a2f34b34c49cd2d69efac22d9bc8ac27cb (diff)
downloadinfinitytier-59e1444b274465f33ed95aab6a9214d25910f85d.tar.gz
infinitytier-59e1444b274465f33ed95aab6a9214d25910f85d.zip
Finish wiring up Cluster, fix some issues with other recent changes.
Diffstat (limited to 'node/Cluster.cpp')
-rw-r--r--node/Cluster.cpp28
1 files changed, 15 insertions, 13 deletions
diff --git a/node/Cluster.cpp b/node/Cluster.cpp
index f1dc45b9..8afd3deb 100644
--- a/node/Cluster.cpp
+++ b/node/Cluster.cpp
@@ -186,19 +186,21 @@ void Cluster::handleIncomingStateMessage(const void *msg,unsigned int len)
try {
Identity id;
ptr += id.deserialize(dmsg,ptr);
- RR->topology->saveIdentity(id);
-
- { // Add or update peer affinity entry
- _PeerAffinity pa(id.address(),fromMemberId,RR->node->now());
- Mutex::Lock _l2(_peerAffinities_m);
- std::vector<_PeerAffinity>::iterator i(std::lower_bound(_peerAffinities.begin(),_peerAffinities.end(),pa)); // O(log(n))
- if ((i != _peerAffinities.end())&&(i->key == pa.key)) {
- i->timestamp = pa.timestamp;
- } else {
- _peerAffinities.push_back(pa);
- std::sort(_peerAffinities.begin(),_peerAffinities.end()); // probably a more efficient way to insert but okay for now
- }
- }
+ if (id) {
+ RR->topology->saveIdentity(id);
+
+ { // Add or update peer affinity entry
+ _PeerAffinity pa(id.address(),fromMemberId,RR->node->now());
+ Mutex::Lock _l2(_peerAffinities_m);
+ std::vector<_PeerAffinity>::iterator i(std::lower_bound(_peerAffinities.begin(),_peerAffinities.end(),pa)); // O(log(n))
+ if ((i != _peerAffinities.end())&&(i->key == pa.key)) {
+ i->timestamp = pa.timestamp;
+ } else {
+ _peerAffinities.push_back(pa);
+ std::sort(_peerAffinities.begin(),_peerAffinities.end()); // probably a more efficient way to insert but okay for now
+ }
+ }
+ }
} catch ( ... ) {
// ignore invalid identities
}