diff options
| author | Adam Ierymenko <adam.ierymenko@gmail.com> | 2016-09-07 15:15:52 -0700 |
|---|---|---|
| committer | Adam Ierymenko <adam.ierymenko@gmail.com> | 2016-09-07 15:15:52 -0700 |
| commit | 1908aa55f51d63bceb7ed5d4211a4274d732de63 (patch) | |
| tree | 105983c4e812f1a082e0e36da57842da43148648 /node/Membership.cpp | |
| parent | 1c08f5e8578fa05975e9885212b6bd4583b397dc (diff) | |
| download | infinitytier-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.cpp | 7 |
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; } |
