BOOST_FOREACH(const Zone::Ptr& zone, DynamicType::GetObjects<Zone>()) {
const std::set<Endpoint::Ptr> members = zone->GetEndpoints();
+ if (members.empty())
+ continue;
+
if (members.find(GetSelf()) != members.end()) {
if (m_Zone)
BOOST_THROW_EXCEPTION(std::runtime_error("Endpoint '" + GetName() + "' is in more than one zone."));
******************************************************************************/
#include "remote/zone.hpp"
+#include "base/objectlock.hpp"
#include <boost/foreach.hpp>
using namespace icinga;
{
std::set<Endpoint::Ptr> result;
- BOOST_FOREACH(const String& endpoint, GetEndpointsRaw())
- result.insert(Endpoint::GetByName(endpoint));
+ Array::Ptr endpoints = GetEndpointsRaw();
+
+ if (endpoints) {
+ ObjectLock olock(endpoints);
+
+ BOOST_FOREACH(const String& name, endpoints) {
+ Endpoint::Ptr endpoint = Endpoint::GetByName(name);
+
+ if (!endpoint)
+ continue;
+
+ result.insert(endpoint);
+ }
+ }
return result;
}