diff options
Diffstat (limited to 'node/Network.cpp')
-rw-r--r-- | node/Network.cpp | 37 |
1 files changed, 15 insertions, 22 deletions
diff --git a/node/Network.cpp b/node/Network.cpp index 0e67471b..8cf022a9 100644 --- a/node/Network.cpp +++ b/node/Network.cpp @@ -100,15 +100,28 @@ Network::Network(const RuntimeEnvironment *renv,uint64_t nwid) : Network::~Network() { + char n[128]; if (_destroyed) { - char n[128]; Utils::snprintf(n,sizeof(n),"networks.d/%.16llx.conf",_id); RR->node->dataStoreDelete(n); Utils::snprintf(n,sizeof(n),"networks.d/%.16llx.mcerts",_id); RR->node->dataStoreDelete(n); } else { clean(); - _dumpMembershipCerts(); + + std::string buf("ZTMCD0"); + Utils::snprintf(n,sizeof(n),"networks.d/%.16llx.mcerts",_id); + Mutex::Lock _l(_lock); + + if ((!_config)||(_config.isPublic())||(_membershipCertificates.size() == 0)) { + RR->node->dataStoreDelete(n); + return; + } + + for(std::map<Address,CertificateOfMembership>::iterator c(_membershipCertificates.begin());c!=_membershipCertificates.end();++c) + c->second.serialize2(buf); + + RR->node->dataStorePut(n,buf,true); } } @@ -420,24 +433,4 @@ void Network::destroy() _tap = (EthernetTap *)0; } -void Network::_dumpMembershipCerts() -{ - char n[128]; - std::string buf("ZTMCD0"); - - Utils::snprintf(n,sizeof(n),"networks.d/%.16llx.mcerts",_id); - - Mutex::Lock _l(_lock); - - if ((!_config)||(_config.isPublic())||(_membershipCertificates.size() == 0)) { - RR->node->dataStoreDelete(n); - return; - } - - for(std::map<Address,CertificateOfMembership>::iterator c(_membershipCertificates.begin());c!=_membershipCertificates.end();++c) - c->second.serialize2(buf); - - RR->node->dataStorePut(n,buf,true); -} - } // namespace ZeroTier |