diff --git a/lib/remote/jsonrpcconnection-heartbeat.cpp b/lib/remote/jsonrpcconnection-heartbeat.cpp index ee29d47e1..ba2c41d4d 100644 --- a/lib/remote/jsonrpcconnection-heartbeat.cpp +++ b/lib/remote/jsonrpcconnection-heartbeat.cpp @@ -15,6 +15,12 @@ using namespace icinga; REGISTER_APIFUNCTION(Heartbeat, event, &JsonRpcConnection::HeartbeatAPIHandler); +/** + * We still send a heartbeat without timeout here + * to keep the m_Seen variable up to date. This is to keep the + * cluster connection alive when there isn't much going on. + */ + void JsonRpcConnection::HandleAndWriteHeartbeats(boost::asio::yield_context yc) { boost::system::error_code ec; @@ -27,41 +33,16 @@ void JsonRpcConnection::HandleAndWriteHeartbeats(boost::asio::yield_context yc) break; } - if (m_NextHeartbeat != 0 && m_NextHeartbeat < Utility::GetTime()) { - { - Log logMsg (LogWarning, "JsonRpcConnection"); - - if (m_Endpoint) { - logMsg << "Client for endpoint '" << m_Endpoint->GetName() << "'"; - } else { - logMsg << "Anonymous client"; - } - - logMsg << " has requested heartbeat message but hasn't responded in time. Closing connection."; - } - - Disconnect(); - break; - } - SendMessageInternal(new Dictionary({ { "jsonrpc", "2.0" }, { "method", "event::Heartbeat" }, - { "params", new Dictionary({ - { "timeout", 120 } - }) } + { "params", new Dictionary() } })); } } Value JsonRpcConnection::HeartbeatAPIHandler(const MessageOrigin::Ptr& origin, const Dictionary::Ptr& params) { - Value vtimeout = params->Get("timeout"); - - if (!vtimeout.IsEmpty()) { - origin->FromClient->m_NextHeartbeat = Utility::GetTime() + vtimeout; - } - return Empty; }