Fix #7508 stop write_config after reset_factory_defaults

This commit is contained in:
Phil Davis 2017-05-03 10:02:17 +05:45
parent b090c7413b
commit 3dcaae882c
No known key found for this signature in database
GPG Key ID: 340A5689A513CA23

View File

@ -456,6 +456,15 @@ function write_config($desc="Unknown", $backup = true, $write_config_only = fals
}
}
if (isset($config['reset_factory_defaults'])) {
/*
We have put a default config.xml on disk and are about to reboot
or reload it. Do not let any system or package code try to save
state to config because that would overwrite the default config
with the running config.
*/
return false;
}
if ($backup) {
backup_config();
@ -525,7 +534,7 @@ function write_config($desc="Unknown", $backup = true, $write_config_only = fals
* integer - indicates completion
******/
function reset_factory_defaults($lock = false, $reboot_required = true) {
global $g;
global $config, $g;
/* Remove all additional packages */
@ -556,6 +565,17 @@ function reset_factory_defaults($lock = false, $reboot_required = true) {
disable_security_checks();
/*
Let write_config know that we are awaiting reload of the current config
to factory defaults. Either the system is about to reboot, throwing away
the current in-memory config as it shuts down, or the in-memory config
is about to be reloaded on-the-fly by parse_config.
In both cases, we want to ensure that write_config does not flush the
in-memory config back to disk.
*/
$config['reset_factory_defaults'] = true;
/* call the wizard */
if ($reboot_required) {
// If we need a reboot first then touch a different trigger file.