Config fixing

- unlock/close the `node.config.php` in every circumstances
This commit is contained in:
Philipp Holzer 2023-01-06 01:10:57 +01:00
parent 5aa8e8adf1
commit e14050491a
Signed by: nupplaPhil
GPG Key ID: 24A7501396EB5432
1 changed files with 10 additions and 8 deletions

View File

@ -182,16 +182,18 @@ class ConfigFileManager
$content = '<?php return [];';
$configStream = fopen($filename, 'r');
if (flock($configStream, LOCK_SH)) {
$content = fread($configStream, filesize($filename));
if (!$content) {
throw new ConfigFileException(sprintf('Couldn\'t read file %s', $filename));
try {
if (flock($configStream, LOCK_SH)) {
$content = fread($configStream, filesize($filename));
if (!$content) {
throw new ConfigFileException(sprintf('Couldn\'t read file %s', $filename));
}
}
} finally {
flock($configStream, LOCK_UN);
fclose($configStream);
}
fclose($configStream);
$dataArray = eval('?>' . $content);
if (is_array($dataArray)) {
@ -250,12 +252,12 @@ class ConfigFileManager
clearstatcache(true, $filename);
if (!ftruncate($configStream, 0) ||
!fwrite($configStream, $encodedData) ||
!fflush($configStream) ||
!flock($configStream, LOCK_UN)) {
!fflush($configStream)) {
throw new ConfigFileException(sprintf('Cannot modify locked file %s', $filename));
}
}
} finally {
flock($configStream, LOCK_UN);
fclose($configStream);
}
}