for(;;) {
sleep(interval);
- auto mplexer = std::unique_ptr<FDMultiplexer>(FDMultiplexer::getMultiplexerSilent());
+ std::unique_ptr<FDMultiplexer> mplexer{nullptr};
+
auto states = g_dstates.getLocal(); // this points to the actual shared_ptrs!
for(auto& dss : *states) {
dss->lastCheck = 0;
if (dss->availability == DownstreamState::Availability::Auto) {
+ if (!mplexer) {
+ mplexer = std::unique_ptr<FDMultiplexer>(FDMultiplexer::getMultiplexerSilent());
+ }
+
if (!queueHealthCheck(mplexer, dss)) {
updateHealthCheckResult(dss, false, false);
}
}
-
}
- handleQueuedHealthChecks(*mplexer);
+ if (mplexer) {
+ handleQueuedHealthChecks(*mplexer);
+ }
}
}