From 6ba1d857ac7961ed5a97a85a328398296c520273 Mon Sep 17 00:00:00 2001 From: Simon Zolin <s.zolin@adguard.com> Date: Tue, 22 Oct 2019 14:58:20 +0300 Subject: [PATCH] * dnsfilter: windows: store rules in memory * dnsfilter: ignore cosmetic rules --- dnsfilter/dnsfilter.go | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) 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) }