parent
8f00e1ca5e
commit
1376d66acb
@ -508,14 +508,14 @@ func (f *Filtering) update(filter *filter) (bool, error) {
|
|||||||
func (f *Filtering) updateIntl(filter *filter) (bool, error) {
|
func (f *Filtering) updateIntl(filter *filter) (bool, error) {
|
||||||
log.Tracef("Downloading update for filter %d from %s", filter.ID, filter.URL)
|
log.Tracef("Downloading update for filter %d from %s", filter.ID, filter.URL)
|
||||||
|
|
||||||
tmpfile, err := ioutil.TempFile(filepath.Join(Context.getDataDir(), filterDir), "")
|
tmpFile, err := ioutil.TempFile(filepath.Join(Context.getDataDir(), filterDir), "")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return false, err
|
return false, err
|
||||||
}
|
}
|
||||||
defer func() {
|
defer func() {
|
||||||
if tmpfile != nil {
|
if tmpFile != nil {
|
||||||
_ = tmpfile.Close()
|
_ = tmpFile.Close()
|
||||||
_ = os.Remove(tmpfile.Name())
|
_ = os.Remove(tmpFile.Name())
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
@ -564,7 +564,7 @@ func (f *Filtering) updateIntl(filter *filter) (bool, error) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
_, err2 := tmpfile.Write(buf[:n])
|
_, err2 := tmpFile.Write(buf[:n])
|
||||||
if err2 != nil {
|
if err2 != nil {
|
||||||
return false, err2
|
return false, err2
|
||||||
}
|
}
|
||||||
@ -579,8 +579,8 @@ func (f *Filtering) updateIntl(filter *filter) (bool, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Extract filter name and count number of rules
|
// Extract filter name and count number of rules
|
||||||
_, _ = tmpfile.Seek(0, io.SeekStart)
|
_, _ = tmpFile.Seek(0, io.SeekStart)
|
||||||
rulesCount, checksum, filterName := f.parseFilterContents(tmpfile)
|
rulesCount, checksum, filterName := f.parseFilterContents(tmpFile)
|
||||||
// Check if the filter has been really changed
|
// Check if the filter has been really changed
|
||||||
if filter.checksum == checksum {
|
if filter.checksum == checksum {
|
||||||
log.Tracef("Filter #%d at URL %s hasn't changed, not updating it", filter.ID, filter.URL)
|
log.Tracef("Filter #%d at URL %s hasn't changed, not updating it", filter.ID, filter.URL)
|
||||||
@ -596,12 +596,14 @@ func (f *Filtering) updateIntl(filter *filter) (bool, error) {
|
|||||||
filter.checksum = checksum
|
filter.checksum = checksum
|
||||||
filterFilePath := filter.Path()
|
filterFilePath := filter.Path()
|
||||||
log.Printf("Saving filter %d contents to: %s", filter.ID, filterFilePath)
|
log.Printf("Saving filter %d contents to: %s", filter.ID, filterFilePath)
|
||||||
err = os.Rename(tmpfile.Name(), filterFilePath)
|
|
||||||
|
// Closing the file before renaming it is necessary on Windows
|
||||||
|
_ = tmpFile.Close()
|
||||||
|
err = os.Rename(tmpFile.Name(), filterFilePath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return false, err
|
return false, err
|
||||||
}
|
}
|
||||||
tmpfile.Close()
|
tmpFile = nil
|
||||||
tmpfile = nil
|
|
||||||
|
|
||||||
return true, nil
|
return true, nil
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user