~singpolyma/biboumi

70ebbae15e7432d56bf23751e548836b388781f6 — Florent Le Coz 8 years ago a165e59
Regularly send a notification for the systemd watchdog
1 files changed, 11 insertions(+), 0 deletions(-)

M src/xmpp/xmpp_component.cpp
M src/xmpp/xmpp_component.cpp => src/xmpp/xmpp_component.cpp +11 -0
@@ 1,3 1,4 @@
#include <utils/timed_events.hpp>
#include <utils/scopeguard.hpp>
#include <utils/tolower.hpp>
#include <logger/logger.hpp>


@@ 273,6 274,16 @@ void XmppComponent::handle_handshake(const Stanza& stanza)
  log_info("Authenticated with the XMPP server");
#ifdef SYSTEMDDAEMON_FOUND
  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
}