summaryrefslogtreecommitdiffstats
path: root/src/etc
diff options
context:
space:
mode:
authorPiBa-NL <PiBa.NL.dev@gmail.com>2018-09-20 23:49:29 +0200
committerjim-p <jimp@netgate.com>2018-10-22 13:35:16 -0400
commitaa73335131ff6ccc95d624c04b2a9f6a8065ef2f (patch)
tree22c2477eb13e0a70bb8332d4084a6591f489fe58 /src/etc
parent8e823a9375e4d066dbf51e8a2c30b99867ae8432 (diff)
downloadpfsense-aa73335131ff6ccc95d624c04b2a9f6a8065ef2f.zip
pfsense-aa73335131ff6ccc95d624c04b2a9f6a8065ef2f.tar.gz
gateway monitoring, wait for apinger to terminate or remove its pid file when restarting it.
(cherry picked from commit 66491555711182d9176f6292fd58397c65e4b2af)
Diffstat (limited to 'src/etc')
-rw-r--r--src/etc/inc/gwlb.inc2
-rw-r--r--src/etc/inc/util.inc16
2 files changed, 12 insertions, 6 deletions
diff --git a/src/etc/inc/gwlb.inc b/src/etc/inc/gwlb.inc
index 0d9444c..7c0a436 100644
--- a/src/etc/inc/gwlb.inc
+++ b/src/etc/inc/gwlb.inc
@@ -82,7 +82,7 @@ function stop_dpinger($gwname = '') {
}
if (isvalidpid($process['pidfile'])) {
- killbypid($process['pidfile']);
+ killbypid($process['pidfile'], 3);
} else {
@unlink($process['pidfile']);
}
diff --git a/src/etc/inc/util.inc b/src/etc/inc/util.inc
index 87c4722..cd33d59 100644
--- a/src/etc/inc/util.inc
+++ b/src/etc/inc/util.inc
@@ -28,8 +28,8 @@ define('VIP_CARP', 2);
define('VIP_IPALIAS', 3);
/* kill a process by pid file */
-function killbypid($pidfile) {
- return sigkillbypid($pidfile, "TERM");
+function killbypid($pidfile, $waitfor = 0) {
+ return sigkillbypid($pidfile, "TERM", $waitfor);
}
function isvalidpid($pidfile) {
@@ -52,12 +52,18 @@ function isvalidproc($proc) {
return is_process_running($proc);
}
-/* sigkill a process by pid file */
+/* sigkill a process by pid file, and wait for it to terminate or remove the .pid file for $waitfor seconds */
/* return 1 for success and 0 for a failure */
-function sigkillbypid($pidfile, $sig) {
+function sigkillbypid($pidfile, $sig, $waitfor = 0) {
if (isvalidpid($pidfile)) {
- return mwexec("/bin/pkill " . escapeshellarg("-{$sig}") .
+ $result = mwexec("/bin/pkill " . escapeshellarg("-{$sig}") .
" -F {$pidfile}", true);
+ $waitcounter = $waitfor * 10;
+ while(isvalidpid($pidfile) && $waitcounter > 0) {
+ $waitcounter = $waitcounter - 1;
+ usleep(100000);
+ }
+ return $result;
}
return 0;
OpenPOWER on IntegriCloud