Skip to content

Commit d01ec86

Browse files
committed
Pre-resolve proxy hostname using bootstrap resolvers if it's a domain
Fixes #2256
1 parent 40d23ed commit d01ec86

1 file changed

Lines changed: 12 additions & 0 deletions

File tree

dnscrypt-proxy/config_loader.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,18 @@ func configureXTransport(proxy *Proxy, config *Config) error {
9494
if err != nil {
9595
return fmt.Errorf("Unable to parse the HTTP proxy URL [%v]", config.HTTPProxyURL)
9696
}
97+
98+
// Pre-resolve proxy hostname using bootstrap resolvers if it's a domain
99+
if httpProxyURL.Hostname() != "" && ParseIP(httpProxyURL.Hostname()) == nil {
100+
ips, ttl, err := proxy.xTransport.resolve(httpProxyURL.Hostname(), proxy.xTransport.useIPv4, proxy.xTransport.useIPv6)
101+
if err != nil {
102+
dlog.Warnf("Unable to resolve HTTP proxy hostname [%s] using bootstrap resolvers: %v", httpProxyURL.Hostname(), err)
103+
} else if len(ips) > 0 {
104+
proxy.xTransport.saveCachedIP(httpProxyURL.Hostname(), ips[0], ttl)
105+
dlog.Infof("Resolved HTTP proxy hostname [%s] to [%s] using bootstrap resolvers", httpProxyURL.Hostname(), ips[0])
106+
}
107+
}
108+
97109
proxy.xTransport.httpProxyFunction = http.ProxyURL(httpProxyURL)
98110
}
99111

0 commit comments

Comments
 (0)