Add TCP/TLS pipelining dns resolver

This commit is contained in:
Daniel
2020-06-16 15:21:05 +02:00
parent fe3b61f1a3
commit f7320d760d
12 changed files with 672 additions and 208 deletions

View File

@@ -62,6 +62,20 @@ func formatIPAndPort(ip net.IP, port uint16) string {
return address
}
func resolverConnFactory(resolver *Resolver) ResolverConn {
switch resolver.ServerType {
case ServerTypeTCP:
return NewTCPResolver(resolver)
case ServerTypeDoT:
return NewTCPResolver(resolver).UseTLS()
default:
return &BasicResolverConn{
clientManager: clientManagerFactory(resolver.ServerType)(resolver),
resolver: resolver,
}
}
}
func clientManagerFactory(serverType string) func(*Resolver) *dnsClientManager {
switch serverType {
case ServerTypeDNS:
@@ -129,12 +143,7 @@ func createResolver(resolverURL, source string) (*Resolver, bool, error) {
UpstreamBlockDetection: blockType,
}
newConn := &BasicResolverConn{
clientManager: clientManagerFactory(u.Scheme)(new),
resolver: new,
}
new.Conn = newConn
new.Conn = resolverConnFactory(new)
return new, false, nil
}