From c9a74ef3ed1be6cdb05f7313672d28f39346187e Mon Sep 17 00:00:00 2001 From: Gunnar Beutner Date: Mon, 2 Jul 2012 11:19:14 +0200 Subject: [PATCH] Fixed problem with keeping subscriptions properly synchronized. --- icinga/endpointmanager.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/icinga/endpointmanager.cpp b/icinga/endpointmanager.cpp index 04f1face1..7230c2281 100644 --- a/icinga/endpointmanager.cpp +++ b/icinga/endpointmanager.cpp @@ -172,6 +172,21 @@ void EndpointManager::RegisterEndpoint(Endpoint::Ptr endpoint) } else { m_PendingEndpoints.push_back(endpoint); } + + if (endpoint->IsLocal()) { + /* this endpoint might have introduced new subscriptions + * or publications which affect remote endpoints, we need + * to close all fully-connected remote endpoints to make sure + * these subscriptions/publications are kept up-to-date. */ + Iterator prev, it; + for (it = m_Endpoints.begin(); it != m_Endpoints.end(); ) { + prev = it; + it++; + + if (!prev->second->IsLocal()) + m_Endpoints.erase(prev); + } + } } /** -- 2.50.1