From 8294066e3e8dd450269f64329d80fc2395d6e622 Mon Sep 17 00:00:00 2001 From: jim-p Date: Mon, 7 Apr 2014 10:10:48 -0400 Subject: Make extra sure that we do not start multiple instances of dhcpleases if, for example, the PID is stale/invalid and there is still a running instance. --- etc/inc/system.inc | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/etc/inc/system.inc b/etc/inc/system.inc index 57b55ce..48376a0 100644 --- a/etc/inc/system.inc +++ b/etc/inc/system.inc @@ -335,8 +335,13 @@ function system_dhcpleases_configure() { @touch("{$g['dhcpd_chroot_path']}/var/db/dhcpd.leases"); if (isvalidpid("{$g['varrun_path']}/dhcpleases.pid")) sigkillbypid("{$g['varrun_path']}/dhcpleases.pid", "HUP"); - else + else { + /* To ensure we do not start multiple instances of dhcpleases, perform some clean-up first. */ + if (is_process_running("dhcpleases")) + mwexec('/bin/pkill dhcpleases'); + @unlink("{$g['varrun_path']}/dhcpleases.pid"); mwexec("/usr/local/sbin/dhcpleases -l {$g['dhcpd_chroot_path']}/var/db/dhcpd.leases -d {$config['system']['domain']} -p {$g['varrun_path']}/dnsmasq.pid -h {$g['varetc_path']}/hosts"); + } } else { sigkillbypid("{$g['varrun_path']}/dhcpleases.pid", "TERM"); @unlink("{$g['varrun_path']}/dhcpleases.pid"); -- cgit v1.1