summaryrefslogtreecommitdiff
path: root/node/Membership.cpp
diff options
context:
space:
mode:
authorAdam Ierymenko <adam.ierymenko@gmail.com>2016-09-07 15:15:52 -0700
committerAdam Ierymenko <adam.ierymenko@gmail.com>2016-09-07 15:15:52 -0700
commit1908aa55f51d63bceb7ed5d4211a4274d732de63 (patch)
tree105983c4e812f1a082e0e36da57842da43148648 /node/Membership.cpp
parent1c08f5e8578fa05975e9885212b6bd4583b397dc (diff)
downloadinfinitytier-1908aa55f51d63bceb7ed5d4211a4274d732de63.tar.gz
infinitytier-1908aa55f51d63bceb7ed5d4211a4274d732de63.zip
Refactor MULTICAST_LIKE pushing to eliminate redundant and unnecessary pushes and simplify code.
Diffstat (limited to 'node/Membership.cpp')
-rw-r--r--node/Membership.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/node/Membership.cpp b/node/Membership.cpp
index e809e2bd..74a01350 100644
--- a/node/Membership.cpp
+++ b/node/Membership.cpp
@@ -89,21 +89,26 @@ void Membership::sendCredentialsIfNeeded(const RuntimeEnvironment *RR,const uint
}
}
-int Membership::addCredential(const RuntimeEnvironment *RR,const CertificateOfMembership &com)
+int Membership::addCredential(const RuntimeEnvironment *RR,const Network *network,const CertificateOfMembership &com)
{
if (_com == com) {
TRACE("addCredential(CertificateOfMembership) for %s on %.16llx ACCEPTED (redundant)",com.issuedTo().toString().c_str(),com.networkId());
+ sendCredentialsIfNeeded(RR,RR->node->now(),com.issuedTo(),network->config(),(const Capability *)0);
return 0;
}
+
const int vr = com.verify(RR);
+
if (vr == 0) {
TRACE("addCredential(CertificateOfMembership) for %s on %.16llx ACCEPTED (new)",com.issuedTo().toString().c_str(),com.networkId());
if (com.timestamp().first > _com.timestamp().first) {
_com = com;
}
+ sendCredentialsIfNeeded(RR,RR->node->now(),com.issuedTo(),network->config(),(const Capability *)0);
} else {
TRACE("addCredential(CertificateOfMembership) for %s on %.16llx REJECTED (%d)",com.issuedTo().toString().c_str(),com.networkId(),vr);
}
+
return vr;
}