- DNS: filtering didn't work

This commit is contained in:
Simon Zolin 2020-03-24 11:30:22 +03:00
parent 06b3378fd7
commit c16dc6cf62
2 changed files with 12 additions and 4 deletions

View file

@ -686,12 +686,12 @@ func processFilteringAfterResponse(ctx *dnsContext) int {
d.Res.Answer = answer
}
case dnsfilter.RewriteEtcHosts:
case dnsfilter.NotFilteredWhiteList:
// nothing
default:
if !ctx.protectionEnabled {
if !ctx.protectionEnabled || // filters are disabled: there's nothing to check for
!ctx.responseFromUpstream { // only check response if it's from an upstream server
break
}
origResp2 := d.Res
@ -817,6 +817,10 @@ func (s *Server) updateStats(d *proxy.DNSContext, elapsed time.Duration, res dns
case dnsfilter.NotFilteredWhiteList:
fallthrough
case dnsfilter.NotFilteredError:
fallthrough
case dnsfilter.ReasonRewrite:
fallthrough
case dnsfilter.RewriteEtcHosts:
e.Result = stats.RNotFiltered
case dnsfilter.FilteredSafeBrowsing:

View file

@ -225,11 +225,15 @@ func (a *AutoHosts) update() {
}
// Process - get the list of IP addresses for the hostname
// Return nil if not found
func (a *AutoHosts) Process(host string) []net.IP {
var ipsCopy []net.IP
a.lock.Lock()
ips, _ := a.table[host]
ipsCopy := make([]net.IP, len(ips))
copy(ipsCopy, ips)
if len(ips) != 0 {
ipsCopy = make([]net.IP, len(ips))
copy(ipsCopy, ips)
}
a.lock.Unlock()
return ipsCopy
}