*(dnsforward): cache upstream instances

 Closes: https://github.com/AdguardTeam/AdGuardHome/issues/1296
This commit is contained in:
Andrey Meshkov
2019-12-23 19:31:27 +03:00
parent 3dd91cf179
commit cdd55139fa
3 changed files with 62 additions and 18 deletions

View File

@@ -11,6 +11,7 @@ import (
"github.com/AdguardTeam/AdGuardHome/querylog"
"github.com/AdguardTeam/AdGuardHome/stats"
"github.com/AdguardTeam/dnsproxy/proxy"
"github.com/AdguardTeam/dnsproxy/upstream"
"github.com/AdguardTeam/golibs/log"
"github.com/joomcode/errorx"
)
@@ -178,18 +179,12 @@ func generateServerConfig() dnsforward.ServerConfig {
return newconfig
}
func getUpstreamsByClient(clientAddr string) []string {
c, ok := Context.clients.Find(clientAddr)
if !ok {
return []string{}
}
log.Debug("Using upstreams %v for client %s (IP: %s)", c.Upstreams, c.Name, clientAddr)
return c.Upstreams
func getUpstreamsByClient(clientAddr string) []upstream.Upstream {
return Context.clients.FindUpstreams(clientAddr)
}
// If a client has his own settings, apply them
func applyAdditionalFiltering(clientAddr string, setts *dnsfilter.RequestFilteringSettings) {
ApplyBlockedServices(setts, config.DNS.BlockedServices)
if len(clientAddr) == 0 {