Another Central harnessed mode fix.

This commit is contained in:
Adam Ierymenko 2017-08-16 14:41:42 -07:00
parent 1387e15c1b
commit 1ce0dcf0ea
3 changed files with 3 additions and 9 deletions

View File

@ -721,6 +721,7 @@ unsigned int EmbeddedNetworkController::handleControlPlaneHttpPOST(
json &revj = member["revision"]; json &revj = member["revision"];
member["revision"] = (revj.is_number() ? ((uint64_t)revj + 1ULL) : 1ULL); member["revision"] = (revj.is_number() ? ((uint64_t)revj + 1ULL) : 1ULL);
_db.saveNetworkMember(nwid,address,member); _db.saveNetworkMember(nwid,address,member);
onNetworkMemberUpdate(nwid,address);
} }
_addMemberNonPersistedFields(nwid,address,member,now); _addMemberNonPersistedFields(nwid,address,member,now);
@ -973,6 +974,7 @@ unsigned int EmbeddedNetworkController::handleControlPlaneHttpPOST(
json &revj = network["revision"]; json &revj = network["revision"];
network["revision"] = (revj.is_number() ? ((uint64_t)revj + 1ULL) : 1ULL); network["revision"] = (revj.is_number() ? ((uint64_t)revj + 1ULL) : 1ULL);
_db.saveNetwork(nwid,network); _db.saveNetwork(nwid,network);
onNetworkUpdate(nwid);
} }
JSONDB::NetworkSummaryInfo ns; JSONDB::NetworkSummaryInfo ns;

View File

@ -93,7 +93,7 @@ public:
void handleRemoteTrace(const ZT_RemoteTrace &rt); void handleRemoteTrace(const ZT_RemoteTrace &rt);
// Called by JSONDB when networks and network members are changed // Called on update via POST or by JSONDB on external update of network or network member records
void onNetworkUpdate(const uint64_t networkId); void onNetworkUpdate(const uint64_t networkId);
void onNetworkMemberUpdate(const uint64_t networkId,const uint64_t memberId); void onNetworkMemberUpdate(const uint64_t networkId,const uint64_t memberId);

View File

@ -164,15 +164,11 @@ void JSONDB::saveNetwork(const uint64_t networkId,const nlohmann::json &networkC
char n[64]; char n[64];
OSUtils::ztsnprintf(n,sizeof(n),"network/%.16llx",(unsigned long long)networkId); OSUtils::ztsnprintf(n,sizeof(n),"network/%.16llx",(unsigned long long)networkId);
writeRaw(n,OSUtils::jsonDump(networkConfig,-1)); writeRaw(n,OSUtils::jsonDump(networkConfig,-1));
bool update;
{ {
Mutex::Lock _l(_networks_m); Mutex::Lock _l(_networks_m);
_NW &nw = _networks[networkId]; _NW &nw = _networks[networkId];
update = !nw.config.empty();
nw.config = nlohmann::json::to_msgpack(networkConfig); nw.config = nlohmann::json::to_msgpack(networkConfig);
} }
if (update)
_parent->onNetworkUpdate(networkId);
_recomputeSummaryInfo(networkId); _recomputeSummaryInfo(networkId);
} }
@ -181,16 +177,12 @@ void JSONDB::saveNetworkMember(const uint64_t networkId,const uint64_t nodeId,co
char n[256]; char n[256];
OSUtils::ztsnprintf(n,sizeof(n),"network/%.16llx/member/%.10llx",(unsigned long long)networkId,(unsigned long long)nodeId); OSUtils::ztsnprintf(n,sizeof(n),"network/%.16llx/member/%.10llx",(unsigned long long)networkId,(unsigned long long)nodeId);
writeRaw(n,OSUtils::jsonDump(memberConfig,-1)); writeRaw(n,OSUtils::jsonDump(memberConfig,-1));
bool update;
{ {
Mutex::Lock _l(_networks_m); Mutex::Lock _l(_networks_m);
std::vector<uint8_t> &m = _networks[networkId].members[nodeId]; std::vector<uint8_t> &m = _networks[networkId].members[nodeId];
update = !m.empty();
m = nlohmann::json::to_msgpack(memberConfig); m = nlohmann::json::to_msgpack(memberConfig);
_members[nodeId].insert(networkId); _members[nodeId].insert(networkId);
} }
if (update)
_parent->onNetworkMemberUpdate(networkId,nodeId);
_recomputeSummaryInfo(networkId); _recomputeSummaryInfo(networkId);
} }