diff --git a/lib/remote/apilistener.cpp b/lib/remote/apilistener.cpp index a05a5735e..94e3bd122 100644 --- a/lib/remote/apilistener.cpp +++ b/lib/remote/apilistener.cpp @@ -1437,10 +1437,12 @@ void ApiListener::LogGlobHandler(std::vector& files, const String& file) void ApiListener::ReplayLog(const JsonRpcConnection::Ptr& client) { Endpoint::Ptr endpoint = client->GetEndpoint(); + Defer resetEndpointSyncing ([&endpoint]() { + ObjectLock olock(endpoint); + endpoint->SetSyncing(false); + }); if (endpoint->GetLogDuration() == 0) { - ObjectLock olock2(endpoint); - endpoint->SetSyncing(false); return; } @@ -1457,14 +1459,10 @@ void ApiListener::ReplayLog(const JsonRpcConnection::Ptr& client) Zone::Ptr target_zone = target_endpoint->GetZone(); if (!target_zone) { - ObjectLock olock2(endpoint); - endpoint->SetSyncing(false); return; } - bool stopReplay = false; - - do { + for (;;) { std::unique_lock lock(m_LogLock); CloseLogFile(); @@ -1546,9 +1544,7 @@ void ApiListener::ReplayLog(const JsonRpcConnection::Ptr& client) Log(LogDebug, "ApiListener") << "Error while replaying log for endpoint '" << endpoint->GetName() << "': " << DiagnosticInformation(ex); - - stopReplay = true; - break; + return; } peer_ts = pmessage->Get("timestamp"); @@ -1569,10 +1565,6 @@ void ApiListener::ReplayLog(const JsonRpcConnection::Ptr& client) } logStream->Close(); - - if (stopReplay) { - break; - } } if (count > 0) { @@ -1587,12 +1579,9 @@ void ApiListener::ReplayLog(const JsonRpcConnection::Ptr& client) if (last_sync) { OpenLogFile(); - break; + return; } - } while (!stopReplay); - - ObjectLock olock2 (endpoint); - endpoint->SetSyncing(false); + } } void ApiListener::StatsFunc(const Dictionary::Ptr& status, const Array::Ptr& perfdata)