mirror of
https://github.com/zerotier/ZeroTierOne.git
synced 2025-02-21 18:06:39 +00:00
One more sync fix.
This commit is contained in:
parent
f8f2432ece
commit
730305ecc7
@ -50,27 +50,31 @@ DBMirrorSet::DBMirrorSet(DB::ChangeListener *listener) :
|
|||||||
|
|
||||||
for(auto db=dbs.begin();db!=dbs.end();++db) {
|
for(auto db=dbs.begin();db!=dbs.end();++db) {
|
||||||
(*db)->each([this,&dbs,&db](uint64_t networkId,const nlohmann::json &network,uint64_t memberId,const nlohmann::json &member) {
|
(*db)->each([this,&dbs,&db](uint64_t networkId,const nlohmann::json &network,uint64_t memberId,const nlohmann::json &member) {
|
||||||
if (memberId == 0) {
|
try {
|
||||||
for(auto db2=dbs.begin();db2!=dbs.end();++db2) {
|
if (network.is_object()) {
|
||||||
if (db->get() != db2->get()) {
|
if (memberId == 0) {
|
||||||
nlohmann::json nw2;
|
for(auto db2=dbs.begin();db2!=dbs.end();++db2) {
|
||||||
if ((!(*db2)->get(networkId,nw2))||(OSUtils::jsonInt(nw2["revision"],0) < OSUtils::jsonInt(network["revision"],0))) {
|
if (db->get() != db2->get()) {
|
||||||
nw2 = network;
|
nlohmann::json nw2;
|
||||||
(*db2)->save(nw2,false);
|
if ((!(*db2)->get(networkId,nw2))||((nw2.is_object())&&(OSUtils::jsonInt(nw2["revision"],0) < OSUtils::jsonInt(network["revision"],0)))) {
|
||||||
|
nw2 = network;
|
||||||
|
(*db2)->save(nw2,false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if (member.is_object()) {
|
||||||
|
for(auto db2=dbs.begin();db2!=dbs.end();++db2) {
|
||||||
|
if (db->get() != db2->get()) {
|
||||||
|
nlohmann::json nw2,m2;
|
||||||
|
if ((!(*db2)->get(networkId,nw2,memberId,m2))||((m2.is_object())&&(OSUtils::jsonInt(m2["revision"],0) < OSUtils::jsonInt(member["revision"],0)))) {
|
||||||
|
m2 = member;
|
||||||
|
(*db2)->save(m2,false);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} catch ( ... ) {} // skip entries that generate JSON errors
|
||||||
for(auto db2=dbs.begin();db2!=dbs.end();++db2) {
|
|
||||||
if (db->get() != db2->get()) {
|
|
||||||
nlohmann::json nw2,m2;
|
|
||||||
if ((!(*db2)->get(networkId,nw2,memberId,m2))||(OSUtils::jsonInt(nw2["revision"],0) < OSUtils::jsonInt(network["revision"],0))) {
|
|
||||||
m2 = member;
|
|
||||||
(*db2)->save(m2,false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user