From 57179f3bdd26f30f3e0d6939b117e01603eac2da Mon Sep 17 00:00:00 2001 From: Michael Friedrich Date: Fri, 18 Sep 2015 12:49:38 +0200 Subject: [PATCH] Only sync objects actually belonging to a cluster zone refs #9927 refs #9100 --- lib/remote/apilistener-configsync.cpp | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/lib/remote/apilistener-configsync.cpp b/lib/remote/apilistener-configsync.cpp index d38444684..d15fbfcdc 100644 --- a/lib/remote/apilistener-configsync.cpp +++ b/lib/remote/apilistener-configsync.cpp @@ -248,6 +248,10 @@ void ApiListener::UpdateConfigObject(const ConfigObject::Ptr& object, const Mess if (object->GetPackage() != "_api") return; + /* don't sync objects without a zone attribute */ + if (object->GetZoneName().IsEmpty()) + return; + Dictionary::Ptr message = new Dictionary(); message->Set("jsonrpc", "2.0"); message->Set("method", "config::UpdateObject"); @@ -303,6 +307,10 @@ void ApiListener::DeleteConfigObject(const ConfigObject::Ptr& object, const Mess if (object->GetPackage() != "_api") return; + /* don't sync objects without a zone attribute */ + if (object->GetZoneName().IsEmpty()) + return; + Dictionary::Ptr message = new Dictionary(); message->Set("jsonrpc", "2.0"); message->Set("method", "config::DeleteObject"); @@ -346,17 +354,12 @@ void ApiListener::SendRuntimeConfigObjects(const JsonRpcConnection::Ptr& aclient String objZone = object->GetZoneName(); - /* only sync objects in the same zone if no zone attribute was set */ - if (objZone.IsEmpty() && azone != lzone) { - Log(LogDebug, "ApiListener") - << "Skipping sync: No object zone specified and client zone '" - << azone->GetName() << "' does not match local zone '" - << lzone->GetName() << "'."; + /* don't sync objects without a zone attribute */ + if (objZone.IsEmpty()) continue; - } /* don't sync objects for non-matching parent-child zones */ - if (!objZone.IsEmpty() && !azone->IsChildOf(lzone)) { + if (!azone->IsChildOf(lzone) && azone != lzone) { Log(LogDebug, "ApiListener") << "Skipping sync: object zone '" << objZone << "' defined but client zone '" << azone->GetName()