summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTomasz Torcz <tomek@pipebreaker.pl>2015-01-09 23:42:16 +0100
committerNick Mathewson <nickm@torproject.org>2015-01-11 11:14:32 -0500
commita8999acc3bca05f1aaa23399c7d5f7a5e51789a4 (patch)
tree9ee5396f4d203b59a37fd9ae902dc98c6511d7a3
parent2aa2d0a1c559bcc2f2198ab7df37ab0a33605904 (diff)
downloadtor-a8999acc3bca05f1aaa23399c7d5f7a5e51789a4.tar.gz
tor-a8999acc3bca05f1aaa23399c7d5f7a5e51789a4.zip
fix and enable systemd watchdog
There were following problems: - configure.ac wrongly checked for defined HAVE_SYSTEMD; this wasn't working, so the watchdog code was not compiled in. Replace library search with explicit version check - sd_notify() watchdog call was unsetting NOTIFY_SOCKET from env; this means only first "watchdog ping" was delivered, each subsequent one did not have socket to be sent to and systemd was killing service - after those fixes, enable Watchdog in systemd unit with one minute intervals
-rw-r--r--configure.ac7
-rw-r--r--contrib/dist/tor.service.in1
-rw-r--r--src/or/main.c2
3 files changed, 5 insertions, 5 deletions
diff --git a/configure.ac b/configure.ac
index 1fd5960366..dedfb7e5bd 100644
--- a/configure.ac
+++ b/configure.ac
@@ -136,6 +136,9 @@ fi
AC_SUBST(TOR_SYSTEMD_CFLAGS)
AC_SUBST(TOR_SYSTEMD_LIBS)
+PKG_CHECK_MODULES(SYSTEMD209, [systemd >= 209],
+ [AC_DEFINE(HAVE_SYSTEMD_209,1,[Have systemd v209 or more])], [])
+
if test x$enable_systemd = xyes -a x$have_systemd != xyes ; then
AC_MSG_ERROR([Explicitly requested systemd support, but systemd not found])
fi
@@ -155,10 +158,6 @@ cpu workers lock up here, so I will disable threads.])
esac
fi
-ifdef([HAVE_SYSTEMD], [
-AC_SEARCH_LIBS([sd_watchdog_enabled], [systemd-daemon],
- [AC_DEFINE(HAVE_SYSTEMD_209,1,[Have systemd v209 or more])], [])
-])
case $host in
*-*-solaris* )
diff --git a/contrib/dist/tor.service.in b/contrib/dist/tor.service.in
index 607615afa2..f50075da6f 100644
--- a/contrib/dist/tor.service.in
+++ b/contrib/dist/tor.service.in
@@ -11,6 +11,7 @@ ExecReload = /bin/kill -HUP ${MAINPID}
KillSignal = SIGINT
TimeoutSec = 30
Restart = on-failure
+WatchdogSec = 1m
LimitNOFILE = 32768
# Hardening
diff --git a/src/or/main.c b/src/or/main.c
index 1b439041b9..bf4e6db7c1 100644
--- a/src/or/main.c
+++ b/src/or/main.c
@@ -1776,7 +1776,7 @@ static periodic_timer_t *systemd_watchdog_timer = NULL;
static void
systemd_watchdog_callback(periodic_timer_t *timer, void *arg)
{
- sd_notify(1, "WATCHDOG=1");
+ sd_notify(0, "WATCHDOG=1");
}
#endif