resolver fix

This commit is contained in:
Vladislav Yarmak 2025-08-16 02:52:52 +03:00
parent aeb1f595af
commit b536362536
2 changed files with 9 additions and 9 deletions

View file

@ -14,30 +14,30 @@ func FromURL(u string) (*net.Resolver, error) {
if err != nil { if err != nil {
return nil, err return nil, err
} }
switch strings.ToLower(parsed.Scheme) {
case "", "dns":
host := parsed.Hostname() host := parsed.Hostname()
port := parsed.Port() port := parsed.Port()
switch strings.ToLower(parsed.Scheme) {
case "", "dns":
if port == "" { if port == "" {
port = "53" port = "53"
} }
return NewPlainResolver(net.JoinHostPort(host, port)), nil return NewPlainResolver(net.JoinHostPort(host, port)), nil
case "tcp": case "tcp":
host := parsed.Hostname()
port := parsed.Port()
if port == "" { if port == "" {
port = "53" port = "53"
} }
return NewTCPResolver(net.JoinHostPort(host, port)), nil return NewTCPResolver(net.JoinHostPort(host, port)), nil
case "http", "https": case "http", "https":
return dns.NewDoHResolver(u) if port == "" {
port = "443"
}
return dns.NewDoHResolver(u, dns.DoHAddresses(net.JoinHostPort(host, port)))
case "tls": case "tls":
host := parsed.Hostname()
port := parsed.Port()
if port == "" { if port == "" {
port = "853" port = "853"
} }
return dns.NewDoTResolver(net.JoinHostPort(host, port)) hp := net.JoinHostPort(host, port)
return dns.NewDoTResolver(hp, dns.DoTAddresses(hp))
default: default:
return nil, errors.New("not implemented") return nil, errors.New("not implemented")
} }

View file

@ -21,7 +21,7 @@ func NewTCPResolver(addr string) *net.Resolver {
PreferGo: true, PreferGo: true,
Dial: func(ctx context.Context, network, _ string) (net.Conn, error) { Dial: func(ctx context.Context, network, _ string) (net.Conn, error) {
dnet := "tcp" dnet := "tcp"
switch (network) { switch network {
case "udp4": case "udp4":
dnet = "tcp4" dnet = "tcp4"
case "udp6": case "udp6":