diff --git a/lib/db_ido/endpointdbobject.cpp b/lib/db_ido/endpointdbobject.cpp index 33ae555768e..988726a2480 100644 --- a/lib/db_ido/endpointdbobject.cpp +++ b/lib/db_ido/endpointdbobject.cpp @@ -63,7 +63,7 @@ Dictionary::Ptr EndpointDbObject::GetStatusFields(void) const fields->Set("identity", endpoint->GetName()); fields->Set("node", IcingaApplication::GetInstance()->GetNodeName()); - fields->Set("is_connected", endpoint->IsConnected() ? 1 : 0); + fields->Set("is_connected", EndpointIsConnected(endpoint)); return fields; } @@ -77,7 +77,7 @@ void EndpointDbObject::UpdateConnectedStatus(const Endpoint::Ptr& endpoint) query1.Type = DbQueryUpdate; Dictionary::Ptr fields1 = make_shared(); - fields1->Set("is_connected", endpoint->IsConnected() ? 1 : 0); + fields1->Set("is_connected", EndpointIsConnected(endpoint)); fields1->Set("status_update_time", DbValue::FromTimestamp(Utility::GetTime())); query1.Fields = fields1; @@ -87,3 +87,14 @@ void EndpointDbObject::UpdateConnectedStatus(const Endpoint::Ptr& endpoint) OnQuery(query1); } + +int EndpointDbObject::EndpointIsConnected(const Endpoint::Ptr& endpoint) +{ + unsigned int is_connected = endpoint->IsConnected() ? 1 : 0; + + /* if identity is equal to node, fake is_connected */ + if (endpoint->GetName() == IcingaApplication::GetInstance()->GetNodeName()) + is_connected = 1; + + return is_connected; +} diff --git a/lib/db_ido/endpointdbobject.h b/lib/db_ido/endpointdbobject.h index 3ada7dd43bd..ec99bb36878 100644 --- a/lib/db_ido/endpointdbobject.h +++ b/lib/db_ido/endpointdbobject.h @@ -46,6 +46,7 @@ class EndpointDbObject : public DbObject private: static void UpdateConnectedStatus(const Endpoint::Ptr& endpoint); + static int EndpointIsConnected(const Endpoint::Ptr& endpoint); }; }