diff --git a/lib/remote/jsonrpcconnection-heartbeat.cpp b/lib/remote/jsonrpcconnection-heartbeat.cpp index 4d023958f..2474688e7 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; @@ -26,44 +32,17 @@ void JsonRpcConnection::HandleAndWriteHeartbeats(boost::asio::yield_context yc) if (m_ShuttingDown) { 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; - } - - if (m_Endpoint) { - SendMessageInternal(new Dictionary({ - { "jsonrpc", "2.0" }, - { "method", "event::Heartbeat" }, - { "params", new Dictionary({ - { "timeout", 120 } - }) } - })); - } + + SendMessageInternal(new Dictionary({ + { "jsonrpc", "2.0" }, + { "method", "event::Heartbeat" }, + { "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; }