From 6ae579b56038775641a1ab3b9ea56a05d244955c Mon Sep 17 00:00:00 2001 From: Phil Davis Date: Mon, 7 Dec 2015 11:14:16 +0545 Subject: Redmine #4279 Package reinstall displayed when shutting down before upgrade Use a different flag file to indicate that a package reinstall is required after a reboot is done first. This avoids the possibility that the user navigates in the webGUI during the time while the shutdown is in progress and is accidentally presented with the reinstall all packages GUI button. Early in rc.bootup switch the flag file to use its ordinary name, so that all subsequent code in boot scripts and webGUI will work as it already does to handle the package reinstall and notifying the user that a package reinstall is about to be done or in progress... --- etc/rc.bootup | 6 ++++++ etc/rc.firmware | 2 +- usr/local/www/diag_backup.php | 2 +- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/etc/rc.bootup b/etc/rc.bootup index d2f0b82..f690f00 100755 --- a/etc/rc.bootup +++ b/etc/rc.bootup @@ -141,6 +141,12 @@ system_check_reset_button(); if (file_exists("/root/firmware.tgz")) unlink("/root/firmware.tgz"); +/* Reinstall of packages after reboot has been requested */ +if (file_exists('/conf/needs_package_sync_after_reboot')) { + touch('/conf/needs_package_sync'); + @unlink('/conf/needs_package_sync_after_reboot'); +} + /* start devd (dhclient now uses it) */ echo "Starting device manager (devd)..."; mute_kernel_msgs(); diff --git a/etc/rc.firmware b/etc/rc.firmware index 0b6f3ed..e5f8310 100755 --- a/etc/rc.firmware +++ b/etc/rc.firmware @@ -365,7 +365,7 @@ pfSenseNanoBSDupgrade) echo "" >> /conf/upgrade_log.txt # Trigger a package reinstallation on reboot - touch /conf/needs_package_sync + touch /conf/needs_package_sync_after_reboot # remount /cf ro /etc/rc.conf_mount_ro diff --git a/usr/local/www/diag_backup.php b/usr/local/www/diag_backup.php index a83bdab..ddab190 100644 --- a/usr/local/www/diag_backup.php +++ b/usr/local/www/diag_backup.php @@ -407,7 +407,7 @@ if ($_POST) { /* this will be picked up by /index.php */ conf_mount_rw(); mark_subsystem_dirty("restore"); - touch("/conf/needs_package_sync"); + touch("/conf/needs_package_sync_after_reboot"); /* remove cache, we will force a config reboot */ if(file_exists("{$g['tmp_path']}/config.cache")) unlink("{$g['tmp_path']}/config.cache"); -- cgit v1.1