|
@@ -81,28 +81,39 @@ bool Membership::sendCredentialsIfNeeded(const RuntimeEnvironment *RR,const uint
|
|
|
|
|
|
int Membership::addCredential(const RuntimeEnvironment *RR,const CertificateOfMembership &com)
|
|
int Membership::addCredential(const RuntimeEnvironment *RR,const CertificateOfMembership &com)
|
|
{
|
|
{
|
|
- TRACE("addCredential(COM) for %.16llx signed by %s issued to %s",com.networkId(),com.signedBy().toString().c_str(),com.issuedTo().toString().c_str());
|
|
|
|
- if (_com == com)
|
|
|
|
|
|
+ if (_com == com) {
|
|
|
|
+ TRACE("addCredential(CertificateOfMembership) for %s on %.16llx ACCEPTED (redundant)",com.issuedTo().toString().c_str(),com.networkId());
|
|
return 0;
|
|
return 0;
|
|
|
|
+ }
|
|
const int vr = com.verify(RR);
|
|
const int vr = com.verify(RR);
|
|
- if ((vr == 0)&&(com.timestamp().first > _com.timestamp().first))
|
|
|
|
- _com = com;
|
|
|
|
|
|
+ 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;
|
|
|
|
+ } else {
|
|
|
|
+ TRACE("addCredential(CertificateOfMembership) for %s on %.16llx REJECTED (%d)",com.issuedTo().toString().c_str(),com.networkId(),vr);
|
|
|
|
+ }
|
|
return vr;
|
|
return vr;
|
|
}
|
|
}
|
|
|
|
|
|
int Membership::addCredential(const RuntimeEnvironment *RR,const Tag &tag)
|
|
int Membership::addCredential(const RuntimeEnvironment *RR,const Tag &tag)
|
|
{
|
|
{
|
|
TState *t = _tags.get(tag.id());
|
|
TState *t = _tags.get(tag.id());
|
|
- if ((t)&&(t->lastReceived != 0)&&(t->tag == tag))
|
|
|
|
|
|
+ if ((t)&&(t->lastReceived != 0)&&(t->tag == tag)) {
|
|
|
|
+ TRACE("addCredential(Tag) for %s on %.16llx ACCEPTED (redundant)",tag.issuedTo().toString().c_str(),tag.networkId());
|
|
return 0;
|
|
return 0;
|
|
|
|
+ }
|
|
const int vr = tag.verify(RR);
|
|
const int vr = tag.verify(RR);
|
|
if (vr == 0) {
|
|
if (vr == 0) {
|
|
|
|
+ TRACE("addCredential(Tag) for %s on %.16llx ACCEPTED (new)",tag.issuedTo().toString().c_str(),tag.networkId());
|
|
if (!t)
|
|
if (!t)
|
|
t = &(_tags[tag.id()]);
|
|
t = &(_tags[tag.id()]);
|
|
if (t->tag.timestamp() <= tag.timestamp()) {
|
|
if (t->tag.timestamp() <= tag.timestamp()) {
|
|
t->lastReceived = RR->node->now();
|
|
t->lastReceived = RR->node->now();
|
|
t->tag = tag;
|
|
t->tag = tag;
|
|
}
|
|
}
|
|
|
|
+ } else {
|
|
|
|
+ TRACE("addCredential(Tag) for %s on %.16llx REJECTED (%d)",tag.issuedTo().toString().c_str(),tag.networkId(),vr);
|
|
}
|
|
}
|
|
return vr;
|
|
return vr;
|
|
}
|
|
}
|
|
@@ -110,10 +121,13 @@ int Membership::addCredential(const RuntimeEnvironment *RR,const Tag &tag)
|
|
int Membership::addCredential(const RuntimeEnvironment *RR,const Capability &cap)
|
|
int Membership::addCredential(const RuntimeEnvironment *RR,const Capability &cap)
|
|
{
|
|
{
|
|
std::map<uint32_t,CState>::iterator c(_caps.find(cap.id()));
|
|
std::map<uint32_t,CState>::iterator c(_caps.find(cap.id()));
|
|
- if ((c != _caps.end())&&(c->second.lastReceived != 0)&&(c->second.cap == cap))
|
|
|
|
|
|
+ if ((c != _caps.end())&&(c->second.lastReceived != 0)&&(c->second.cap == cap)) {
|
|
|
|
+ TRACE("addCredential(Capability) for %s on %.16llx ACCEPTED (redundant)",cap.issuedTo().toString().c_str(),cap.networkId());
|
|
return 0;
|
|
return 0;
|
|
|
|
+ }
|
|
const int vr = cap.verify(RR);
|
|
const int vr = cap.verify(RR);
|
|
if (vr == 0) {
|
|
if (vr == 0) {
|
|
|
|
+ TRACE("addCredential(Capability) for %s on %.16llx ACCEPTED (new)",cap.issuedTo().toString().c_str(),cap.networkId());
|
|
if (c == _caps.end()) {
|
|
if (c == _caps.end()) {
|
|
CState &c2 = _caps[cap.id()];
|
|
CState &c2 = _caps[cap.id()];
|
|
c2.lastReceived = RR->node->now();
|
|
c2.lastReceived = RR->node->now();
|
|
@@ -122,6 +136,8 @@ int Membership::addCredential(const RuntimeEnvironment *RR,const Capability &cap
|
|
c->second.lastReceived = RR->node->now();
|
|
c->second.lastReceived = RR->node->now();
|
|
c->second.cap = cap;
|
|
c->second.cap = cap;
|
|
}
|
|
}
|
|
|
|
+ } else {
|
|
|
|
+ TRACE("addCredential(Capability) for %s on %.16llx REJECTED (%d)",cap.issuedTo().toString().c_str(),cap.networkId(),vr);
|
|
}
|
|
}
|
|
return vr;
|
|
return vr;
|
|
}
|
|
}
|