diff --git a/src/etc/inc/interfaces.inc b/src/etc/inc/interfaces.inc index 08b05c93a..ebb2d7fae 100644 --- a/src/etc/inc/interfaces.inc +++ b/src/etc/inc/interfaces.inc @@ -886,14 +886,14 @@ function interface_bring_down($interface = 'wan', $ifacecfg = false) configdp_run('interface reconfigure', [$interface], true); break; } - killbypid("/var/run/{$ppp['type']}_{$interface}.pid", 'TERM', true); + killbypid("/var/run/{$ppp['type']}_{$interface}.pid"); break; } } } break; case 'dhcp': - killbypid("/var/run/dhclient.{$realif}.pid", 'TERM', true); + killbypid("/var/run/dhclient.{$realif}.pid"); break; default: break; @@ -1245,7 +1245,7 @@ EOD; unset($mpdconf); /* stop the service as a precaution */ - killbypid("/var/run/{$ppp['type']}_{$interface}.pid", 'TERM', true); + killbypid("/var/run/{$ppp['type']}_{$interface}.pid"); // Create the uptime log if requested and if it doesn't exist already, or delete it if it is no longer requested. if (isset($ppp['uptime'])) { @@ -1310,7 +1310,7 @@ function interface_proxyarp_configure($interface = '') /* kill any running choparp, on restart "all" */ if (empty($interface)) { - killbyname('choparp'); + killbyname('choparp'); /* XXX only kills one */ } $paa = array(); @@ -2703,7 +2703,7 @@ function interface_dhcpv6_configure($interface, $wancfg) $realifv6 = get_real_interface($interface, 'inet6'); /* always kill rtsold in case of reconfigure */ - killbypid('/var/run/rtsold.pid', 'TERM', true); + killbypid('/var/run/rtsold.pid'); $rtsoldcommand = exec_safe( '/usr/sbin/rtsold -p %s -M %s -O %s -R %s -a -u', @@ -3113,7 +3113,7 @@ function interface_dhcp_configure($interface = 'wan') return; } - killbypid("/var/run/dhclient.{$wanif}.pid", 'TERM', true); + killbypid("/var/run/dhclient.{$wanif}.pid"); $fd = fopen("/var/etc/dhclient_{$interface}.conf", "w"); if (!$fd) { diff --git a/src/etc/inc/plugins.inc.d/dhcpd.inc b/src/etc/inc/plugins.inc.d/dhcpd.inc index 512e3d108..9ddb79990 100644 --- a/src/etc/inc/plugins.inc.d/dhcpd.inc +++ b/src/etc/inc/plugins.inc.d/dhcpd.inc @@ -572,7 +572,7 @@ function dhcpd_dhcp4_configure($verbose = false) service_log('Starting DHCPv4 service...', $verbose); - killbypid('/var/dhcpd/var/run/dhcpd.pid', 'TERM', true); + killbypid('/var/dhcpd/var/run/dhcpd.pid'); /* Only consider DNS servers with IPv4 addresses for the IPv4 DHCP server. */ $dns_arrv4 = []; @@ -1272,8 +1272,8 @@ function dhcpd_dhcp6_configure($verbose = false, $blacklist = []) service_log('Starting DHCPv6 service...', $verbose); - killbypid('/var/dhcpd/var/run/dhcpdv6.pid', 'TERM', true); - killbypid('/var/run/dhcpleases6.pid', 'TERM', true); + killbypid('/var/dhcpd/var/run/dhcpdv6.pid'); + killbypid('/var/run/dhcpleases6.pid'); $iflist = get_configured_interface_with_descr(); $ifconfig_details = legacy_interfaces_details(); @@ -1628,7 +1628,7 @@ function dhcpd_dhcrelay4_configure($verbose = false) service_log('Starting DHCPv4 relay...', $verbose); - killbypid('/var/run/dhcrelay.pid', 'TERM', true); + killbypid('/var/run/dhcrelay.pid'); $iflist = get_configured_interface_with_descr(); $ifconfig_details = legacy_interfaces_details(); @@ -1740,7 +1740,7 @@ function dhcpd_dhcrelay6_configure($verbose = false) service_log('Starting DHCPv6 relay...', $verbose); - killbypid('/var/run/dhcrelay6.pid', 'TERM', true); + killbypid('/var/run/dhcrelay6.pid'); $iflist = get_configured_interface_with_descr(); $ifconfig_details = legacy_interfaces_details(); diff --git a/src/etc/inc/util.inc b/src/etc/inc/util.inc index 55d654fe0..05f507f99 100644 --- a/src/etc/inc/util.inc +++ b/src/etc/inc/util.inc @@ -32,12 +32,12 @@ require_once 'IPv6.inc'; -function killbyname($procname, $sig = 'TERM', $waitforit = false) +function killbyname($procname, $sig = 'TERM', $waitforit = true) { _killbypid(shell_safe('/bin/pgrep -anx %s', $procname), $sig, $waitforit); } -function killbypid($pid_or_file, $sig = 'TERM', $waitforit = false) +function killbypid($pid_or_file, $sig = 'TERM', $waitforit = true) { $pid = $pid_or_file; @@ -56,7 +56,7 @@ function _killbypid($pid, $sig, $waitforit) mwexecf('/bin/kill -%s %s', [$sig, $pid]); - if (!$waitforit) { + if (!$waitforit || $sig == 'HUP') { return; } @@ -197,7 +197,7 @@ function service_control_stop($name, $extras) mwexec($cmd); } } elseif (isset($service['pidfile'])) { - killbypid($service['pidfile'], 'TERM', true); + killbypid($service['pidfile']); } else { /* last resort, but not very elegant */ killbyname($service['name']);