From 5d60cd1f29d74e6d034a8b0afb9cb2d8aab67b68 Mon Sep 17 00:00:00 2001 From: Franco Fichtner Date: Wed, 9 Nov 2016 17:10:54 +0100 Subject: [PATCH] gateways: always restart apinger, HUP doesn't work --- src/etc/inc/gwlb.inc | 34 ++++++---------------------------- src/etc/inc/services.inc | 2 +- 2 files changed, 7 insertions(+), 29 deletions(-) diff --git a/src/etc/inc/gwlb.inc b/src/etc/inc/gwlb.inc index 213deee52..a99394336 100644 --- a/src/etc/inc/gwlb.inc +++ b/src/etc/inc/gwlb.inc @@ -42,20 +42,13 @@ function return_apinger_defaults() ); } -function setup_gateways_monitor_full() -{ - killbypid('/var/run/apinger.pid'); - setup_gateways_monitor(); -} - -/* - * Creates monitoring configuration file and - * adds appropriate static routes. - */ function setup_gateways_monitor() { global $config; + killbypid('/var/run/apinger.pid', 'TERM', true); + @unlink('/var/run/apinger.status'); + @mkdir('/var/db/rrd', 0775); @chown('/var/db/rrd', 'nobody'); @@ -380,27 +373,11 @@ EOD; $gateways_arr = return_gateways_array(); if (!is_array($gateways_arr)) { log_error("No gateways to monitor. Apinger will not be run."); - killbypid('/var/run/apinger.pid'); - @unlink('/var/run/apinger.status'); return; } - @file_put_contents('/var/etc/apinger.conf', $apingerconfig); - unset($apingerconfig); - - /* Restart apinger process */ - if (isvalidpid('/var/run/apinger.pid')) { - killbypid('/var/run/apinger.pid', 'HUP'); - } else { - /* start a new apinger process */ - @unlink('/var/run/apinger.status'); - sleep(1); - mwexec_bg('/usr/local/sbin/apinger -c /var/etc/apinger.conf'); - sleep(1); - killbypid('/var/run/apinger.pid', 'USR1'); - } - - return 0; + file_put_contents('/var/etc/apinger.conf', $apingerconfig); + mwexec_bg('/usr/local/sbin/apinger -c /var/etc/apinger.conf'); } /* return the status of the apinger targets as a array */ @@ -412,6 +389,7 @@ function return_gateways_status($byname = false) /* Always get the latest status from apinger */ killbypid('/var/run/apinger.pid', 'USR1'); + /* we may read the wrong file here as it's async: */ if (file_exists('/var/run/apinger.status')) { $apingerstatus = file('/var/run/apinger.status'); } diff --git a/src/etc/inc/services.inc b/src/etc/inc/services.inc index 7758d509b..55b96582d 100644 --- a/src/etc/inc/services.inc +++ b/src/etc/inc/services.inc @@ -2471,7 +2471,7 @@ function services_get() $pconfig = array(); $pconfig['name'] = "apinger"; $pconfig['description'] = gettext("Gateway Monitoring Daemon"); - $pconfig['php']['restart'] = array('setup_gateways_monitor_full'); + $pconfig['php']['restart'] = array('setup_gateways_monitor'); $pconfig['php']['start'] = array('setup_gateways_monitor'); $pconfig['pidfile'] = '/var/run/apinger.pid'; $services[] = $pconfig;