aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorScott Ullrich <sullrich@pfsense.org>2007-01-28 02:35:21 +0000
committerScott Ullrich <sullrich@pfsense.org>2007-01-28 02:35:21 +0000
commit356b821123c240f69f63c3329d3365eb4c6bea7a (patch)
tree2b6a2b6e3d920bd15b57f38b5cbba903547f89a4
parent623eea27ddeec21c189f80e26f06956ec55273f9 (diff)
downloadpfsense-packages-356b821123c240f69f63c3329d3365eb4c6bea7a.tar.gz
pfsense-packages-356b821123c240f69f63c3329d3365eb4c6bea7a.tar.bz2
pfsense-packages-356b821123c240f69f63c3329d3365eb4c6bea7a.zip
Lock the config while writing out files that could already being written by a different process.
-rw-r--r--packages/tinydns/tinydns.inc19
1 files changed, 13 insertions, 6 deletions
diff --git a/packages/tinydns/tinydns.inc b/packages/tinydns/tinydns.inc
index 1c5155db..37c3d542 100644
--- a/packages/tinydns/tinydns.inc
+++ b/packages/tinydns/tinydns.inc
@@ -103,6 +103,7 @@ EOD;
fclose($fd);
conf_mount_ro();
filter_configure();
+
}
function tinydns_custom_php_deinstall_command() {
@@ -132,21 +133,22 @@ function tinydns_custom_php_changeip_command() {
exec("/bin/mkdir /service");
exec("/bin/ln -s /etc/tinydns /service/");
if($updatecron) {
- $text_1 = "*/1 * * * * root /usr/bin/nice -n20 /etc/ping_hosts.sh";
- $text_5 = "*/5 * * * * root /usr/bin/nice -n20 /etc/ping_hosts.sh";
+ $text_1 = "*/1 * * * * root /etc/ping_hosts.sh";
+ $text_5 = "*/5 * * * * root /etc/ping_hosts.sh";
$filenamea = "/etc/crontab";
remove_text_from_file($filenamea, $text_1);
remove_text_from_file($filenamea, $text_5);
add_text_to_file($filenamea, $text_1);
} else {
- $text_1 = "*/1 * * * * root /usr/bin/nice -n20 /etc/ping_hosts.sh";
- $text_5 = "*/5 * * * * root /usr/bin/nice -n20 /etc/ping_hosts.sh";
+ $text_1 = "*/1 * * * * root /etc/ping_hosts.sh";
+ $text_5 = "*/5 * * * * root /etc/ping_hosts.sh";
$filenamea = "/etc/crontab";
remove_text_from_file($filenamea, $text_1);
remove_text_from_file($filenamea, $text_5);
add_text_to_file($filenamea, $text_5);
}
- exec("killall -HUP cron");
+ exec("killall cron");
+ exec("cron");
conf_mount_ro();
filter_configure();
}
@@ -204,6 +206,7 @@ function tinydns_setup_ping_items() {
log_error("Could not open /var/db/pkgpinghosts for writing.");
return;
}
+ config_lock();
/* write out each ip address so ping_hosts.sh can begin monitoring ip
* status and create a database of the status information that we can use.
*/
@@ -246,12 +249,15 @@ function tinydns_setup_ping_items() {
}
}
fclose($fd);
+ config_unlock();
conf_mount_ro();
}
function tinydns_create_zone_file() {
global $g, $config;
conf_mount_rw();
+ config_lock();
+ exec("rm -f /service/tinydns/root/data");
$fd = fopen("/service/tinydns/root/data", "w");
if(!$fd) {
log_error("Could not open /service/tinydns/root/data for writing.");
@@ -271,7 +277,7 @@ function tinydns_create_zone_file() {
if($monitorip) {
$status = tinydns_get_record_status($monitorip);
if($status == "DOWN")
- $ipaddress = tinydns_get_backup_record($ipaddress);
+ $ipaddress = tinydns_get_backup_record($ipaddress);
}
$record_data = tinydns_get_rowline_data($ipaddress, $domain['recordtype'], $ttl, $hostname);
if($record_data)
@@ -301,6 +307,7 @@ function tinydns_create_zone_file() {
fclose($fd);
/* tell tinydns to reload zone file */
exec("cd /service/tinydns/root && /usr/local/bin/tinydns-data");
+ config_unlock();
conf_mount_ro();
}