Regularly send a notification for the systemd watchdog
This commit is contained in:
@@ -1,3 +1,4 @@
|
|||||||
|
#include <utils/timed_events.hpp>
|
||||||
#include <utils/scopeguard.hpp>
|
#include <utils/scopeguard.hpp>
|
||||||
#include <utils/tolower.hpp>
|
#include <utils/tolower.hpp>
|
||||||
#include <logger/logger.hpp>
|
#include <logger/logger.hpp>
|
||||||
@@ -273,6 +274,16 @@ void XmppComponent::handle_handshake(const Stanza& stanza)
|
|||||||
log_info("Authenticated with the XMPP server");
|
log_info("Authenticated with the XMPP server");
|
||||||
#ifdef SYSTEMDDAEMON_FOUND
|
#ifdef SYSTEMDDAEMON_FOUND
|
||||||
sd_notify(0, "READY=1");
|
sd_notify(0, "READY=1");
|
||||||
|
// Install an event that sends a keepalive to systemd. If biboumi crashes
|
||||||
|
// or hangs for too long, systemd will restart it.
|
||||||
|
uint64_t usec;
|
||||||
|
if (sd_watchdog_enabled(0, &usec) > 0)
|
||||||
|
{
|
||||||
|
std::chrono::microseconds delay(usec);
|
||||||
|
TimedEventsManager::instance().add_event(TimedEvent(
|
||||||
|
std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::microseconds(usec / 2)),
|
||||||
|
[]() { sd_notify(0, "WATCHDOG=1"); }));
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user