Be more atomic during writing of files -- this prevents other processes from seeing empty or impartial files

This commit is contained in:
Eugene Bujak
2018-09-06 02:03:03 +03:00
parent 0ce40fd46e
commit 859f1590dd
2 changed files with 18 additions and 3 deletions

View File

@@ -929,11 +929,17 @@ func writeFilterFile() error {
data = append(data, []byte(rule)...)
data = append(data, '\n')
}
err := ioutil.WriteFile(filterpath, data, 0644)
err := ioutil.WriteFile(filterpath+".tmp", data, 0644)
if err != nil {
log.Printf("Couldn't write filter file: %s", err)
return err
}
err = os.Rename(filterpath+".tmp", filterpath)
if err != nil {
log.Printf("Couldn't rename filter file: %s", err)
return err
}
return nil
}