Add ErrAlreadyExists
This commit is contained in:
parent
2b2a797cf7
commit
abb51ddb8a
|
@ -13,10 +13,5 @@ debug
|
||||||
/querylog.json.1
|
/querylog.json.1
|
||||||
|
|
||||||
# Test output
|
# Test output
|
||||||
dnsfilter/dnsfilter.TestLotsOfRulesLotsOfHostsMemoryUsage1.pprof
|
dnsfilter/dnsfilter.TestLotsOfRules*.pprof
|
||||||
dnsfilter/dnsfilter.TestLotsOfRulesLotsOfHostsMemoryUsage2.pprof
|
|
||||||
dnsfilter/dnsfilter.TestLotsOfRulesLotsOfHostsMemoryUsage3.pprof
|
|
||||||
dnsfilter/dnsfilter.TestLotsOfRulesMemoryUsage1.pprof
|
|
||||||
dnsfilter/dnsfilter.TestLotsOfRulesMemoryUsage2.pprof
|
|
||||||
dnsfilter/dnsfilter.TestLotsOfRulesMemoryUsage3.pprof
|
|
||||||
tests/top-1m.csv
|
tests/top-1m.csv
|
||||||
|
|
|
@ -731,12 +731,13 @@ func (filter *filter) update(now time.Time) (bool, error) {
|
||||||
}
|
}
|
||||||
} else if len(line) != 0 {
|
} else if len(line) != 0 {
|
||||||
err = d.AddRule(line, 0)
|
err = d.AddRule(line, 0)
|
||||||
if err == dnsfilter.ErrInvalidSyntax {
|
if err == dnsfilter.ErrAlreadyExists || err == dnsfilter.ErrInvalidSyntax {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Printf("Couldn't add rule %s: %s", filter.URL, err)
|
log.Printf("Cannot add rule %s from %s: %s", line, filter.URL, err)
|
||||||
return false, err
|
// Just ignore invalid rules
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
rulesCount++
|
rulesCount++
|
||||||
}
|
}
|
||||||
|
|
|
@ -149,11 +149,13 @@ func setupPlugin(c *caddy.Controller) (*plug, error) {
|
||||||
text := scanner.Text()
|
text := scanner.Text()
|
||||||
|
|
||||||
err = p.d.AddRule(text, uint32(i))
|
err = p.d.AddRule(text, uint32(i))
|
||||||
if err == dnsfilter.ErrInvalidSyntax {
|
if err == dnsfilter.ErrAlreadyExists || err == dnsfilter.ErrInvalidSyntax {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
log.Printf("Cannot add rule %s: %s", text, err)
|
||||||
|
// Just ignore invalid rules
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
count++
|
count++
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,9 +33,12 @@ const defaultSafebrowsingURL = "http://%s/safebrowsing-lookup-hash.html?prefixes
|
||||||
const defaultParentalServer = "pctrl.adguard.com"
|
const defaultParentalServer = "pctrl.adguard.com"
|
||||||
const defaultParentalURL = "http://%s/check-parental-control-hash?prefixes=%s&sensitivity=%d"
|
const defaultParentalURL = "http://%s/check-parental-control-hash?prefixes=%s&sensitivity=%d"
|
||||||
|
|
||||||
// ErrInvalidSyntax is returned by AddRule when rule is invalid
|
// ErrInvalidSyntax is returned by AddRule when the rule is invalid
|
||||||
var ErrInvalidSyntax = errors.New("dnsfilter: invalid rule syntax")
|
var ErrInvalidSyntax = errors.New("dnsfilter: invalid rule syntax")
|
||||||
|
|
||||||
|
// ErrInvalidSyntax is returned by AddRule when the rule was already added to the filter
|
||||||
|
var ErrAlreadyExists = errors.New("dnsfilter: rule was already added")
|
||||||
|
|
||||||
// ErrInvalidParental is returned by EnableParental when sensitivity is not a valid value
|
// ErrInvalidParental is returned by EnableParental when sensitivity is not a valid value
|
||||||
var ErrInvalidParental = errors.New("dnsfilter: invalid parental sensitivity, must be either 3, 10, 13 or 17")
|
var ErrInvalidParental = errors.New("dnsfilter: invalid parental sensitivity, must be either 3, 10, 13 or 17")
|
||||||
|
|
||||||
|
@ -737,8 +740,7 @@ func (d *Dnsfilter) AddRule(input string, filterListID uint32) error {
|
||||||
d.storageMutex.RUnlock()
|
d.storageMutex.RUnlock()
|
||||||
if exists {
|
if exists {
|
||||||
// already added
|
// already added
|
||||||
// TODO: Change the error type
|
return ErrAlreadyExists
|
||||||
return ErrInvalidSyntax
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if !isValidRule(input) {
|
if !isValidRule(input) {
|
||||||
|
|
|
@ -261,7 +261,7 @@ func (d *Dnsfilter) checkAddRule(t *testing.T, rule string) {
|
||||||
func (d *Dnsfilter) checkAddRuleFail(t *testing.T, rule string) {
|
func (d *Dnsfilter) checkAddRuleFail(t *testing.T, rule string) {
|
||||||
t.Helper()
|
t.Helper()
|
||||||
err := d.AddRule(rule, 0)
|
err := d.AddRule(rule, 0)
|
||||||
if err == ErrInvalidSyntax {
|
if err == ErrInvalidSyntax || err == ErrAlreadyExists {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -318,7 +318,7 @@ func loadTestRules(d *Dnsfilter) error {
|
||||||
for scanner.Scan() {
|
for scanner.Scan() {
|
||||||
rule := scanner.Text()
|
rule := scanner.Text()
|
||||||
err = d.AddRule(rule, 0)
|
err = d.AddRule(rule, 0)
|
||||||
if err == ErrInvalidSyntax {
|
if err == ErrInvalidSyntax || err == ErrAlreadyExists {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -724,6 +724,7 @@ func BenchmarkAddRule(b *testing.B) {
|
||||||
err := d.AddRule(rule, 0)
|
err := d.AddRule(rule, 0)
|
||||||
switch err {
|
switch err {
|
||||||
case nil:
|
case nil:
|
||||||
|
case ErrAlreadyExists: // ignore rules which were already added
|
||||||
case ErrInvalidSyntax: // ignore invalid syntax
|
case ErrInvalidSyntax: // ignore invalid syntax
|
||||||
default:
|
default:
|
||||||
b.Fatalf("Error while adding rule %s: %s", rule, err)
|
b.Fatalf("Error while adding rule %s: %s", rule, err)
|
||||||
|
@ -743,6 +744,7 @@ func BenchmarkAddRuleParallel(b *testing.B) {
|
||||||
}
|
}
|
||||||
switch err {
|
switch err {
|
||||||
case nil:
|
case nil:
|
||||||
|
case ErrAlreadyExists: // ignore rules which were already added
|
||||||
case ErrInvalidSyntax: // ignore invalid syntax
|
case ErrInvalidSyntax: // ignore invalid syntax
|
||||||
default:
|
default:
|
||||||
b.Fatalf("Error while adding rule %s: %s", rule, err)
|
b.Fatalf("Error while adding rule %s: %s", rule, err)
|
||||||
|
|
Loading…
Reference in New Issue