* feat(sessionresolver): try many and use what works * fix(sessionresolver): make sure we can use quic * fix: the config struct is unnecessary * fix: make kvstore optional * feat: write simple integration test * feat: start adding tests * feat: continue writing tests * fix(sessionresolver): add more unit tests * fix(sessionresolver): finish adding tests * refactor(sessionresolver): changes after code review
26 lines
708 B
Go
26 lines
708 B
Go
package sessionresolver
|
|
|
|
import "github.com/ooni/probe-cli/v3/internal/engine/netx"
|
|
|
|
// dnsclientmaker makes a new resolver.
|
|
type dnsclientmaker interface {
|
|
// Make makes a new resolver.
|
|
Make(config netx.Config, URL string) (childResolver, error)
|
|
}
|
|
|
|
// clientmaker returns a valid dnsclientmaker
|
|
func (r *Resolver) clientmaker() dnsclientmaker {
|
|
if r.dnsClientMaker != nil {
|
|
return r.dnsClientMaker
|
|
}
|
|
return &defaultDNSClientMaker{}
|
|
}
|
|
|
|
// defaultDNSClientMaker is the default dnsclientmaker
|
|
type defaultDNSClientMaker struct{}
|
|
|
|
// Make implements dnsclientmaker.Make.
|
|
func (*defaultDNSClientMaker) Make(config netx.Config, URL string) (childResolver, error) {
|
|
return netx.NewDNSClient(config, URL)
|
|
}
|