diff --git a/dnsfilter/dnsfilter.go b/dnsfilter/dnsfilter.go index 2902c75a..eed6bd33 100644 --- a/dnsfilter/dnsfilter.go +++ b/dnsfilter/dnsfilter.go @@ -13,6 +13,7 @@ import ( "net" "net/http" "os" + "runtime" "strings" "sync" "sync/atomic" @@ -772,18 +773,31 @@ func (d *Dnsfilter) initFiltering(filters map[int]string) error { list = &urlfilter.StringRuleList{ ID: 0, RulesText: dataOrFilePath, - IgnoreCosmetic: false, + IgnoreCosmetic: true, } } else if !fileExists(dataOrFilePath) { list = &urlfilter.StringRuleList{ ID: id, - IgnoreCosmetic: false, + IgnoreCosmetic: true, + } + + } else if runtime.GOOS == "windows" { + // On Windows we don't pass a file to urlfilter because + // it's difficult to update this file while it's being used. + data, err := ioutil.ReadFile(dataOrFilePath) + if err != nil { + return fmt.Errorf("ioutil.ReadFile(): %s: %s", dataOrFilePath, err) + } + list = &urlfilter.StringRuleList{ + ID: id, + RulesText: string(data), + IgnoreCosmetic: true, } } else { var err error - list, err = urlfilter.NewFileRuleList(id, dataOrFilePath, false) + list, err = urlfilter.NewFileRuleList(id, dataOrFilePath, true) if err != nil { return fmt.Errorf("urlfilter.NewFileRuleList(): %s: %s", dataOrFilePath, err) }