Fix: domain dns should follow hosts config, close #1318

This commit is contained in:
Dreamacro
2021-04-01 21:20:44 +08:00
parent 4ad9761b32
commit d0c829c578
3 changed files with 18 additions and 11 deletions

View File

@ -7,6 +7,7 @@ import (
"strings"
"github.com/Dreamacro/clash/component/dialer"
"github.com/Dreamacro/clash/component/resolver"
D "github.com/miekg/dns"
)
@ -28,8 +29,7 @@ func (c *client) ExchangeContext(ctx context.Context, m *D.Msg) (msg *D.Msg, err
// a default ip dns
ip = net.ParseIP(c.host)
} else {
var err error
if ip, err = c.r.ResolveIP(c.host); err != nil {
if ip, err = resolver.ResolveIPWithResolver(c.host, c.r); err != nil {
return nil, fmt.Errorf("use default dns resolve failed: %w", err)
}
}

View File

@ -9,6 +9,7 @@ import (
"net/http"
"github.com/Dreamacro/clash/component/dialer"
"github.com/Dreamacro/clash/component/resolver"
D "github.com/miekg/dns"
)
@ -83,12 +84,12 @@ func newDoHClient(url string, r *Resolver) *dohClient {
return nil, err
}
ip, err := r.ResolveIPv4(host)
ip, err := resolver.ResolveIPWithResolver(host, r)
if err != nil {
return nil, err
}
return dialer.DialContext(ctx, "tcp4", net.JoinHostPort(ip.String(), port))
return dialer.DialContext(ctx, "tcp", net.JoinHostPort(ip.String(), port))
},
},
}