Commit 1e6594d0 authored by W. Trevor King's avatar W. Trevor King

namesys/dns: Pluggable lookupTXT field

So we can attach a mock lookup function for testing.
parent e4447b3c
......@@ -56,7 +56,7 @@ The resolver will give:
recursive, _, _ := req.Option("recursive").Bool()
name := req.Arguments()[0]
var resolver namesys.DNSResolver
resolver := namesys.NewDNSResolver()
depth := 1
if recursive {
......
......@@ -11,12 +11,26 @@ import (
path "github.com/ipfs/go-ipfs/path"
)
type LookupTXTFunc func(name string) (txt []string, err error)
// DNSResolver implements a Resolver on DNS domains
type DNSResolver struct {
lookupTXT LookupTXTFunc
// TODO: maybe some sort of caching?
// cache would need a timeout
}
// NewDNSResolver constructs a name resolver using DNS TXT records.
func NewDNSResolver() Resolver {
return &DNSResolver{lookupTXT: net.LookupTXT}
}
// newDNSResolver constructs a name resolver using DNS TXT records,
// returning a resolver instead of NewDNSResolver's Resolver.
func newDNSResolver() resolver {
return &DNSResolver{lookupTXT: net.LookupTXT}
}
// Resolve implements Resolver.
func (r *DNSResolver) Resolve(ctx context.Context, name string) (path.Path, error) {
return r.ResolveN(ctx, name, DefaultDepthLimit)
......@@ -36,7 +50,7 @@ func (r *DNSResolver) resolveOnce(ctx context.Context, name string) (path.Path,
}
log.Infof("DNSResolver resolving %s", name)
txt, err := net.LookupTXT(name)
txt, err := r.lookupTXT(name)
if err != nil {
return "", err
}
......
......@@ -27,7 +27,7 @@ type mpns struct {
func NewNameSystem(r routing.IpfsRouting) NameSystem {
return &mpns{
resolvers: map[string]resolver{
"dns": new(DNSResolver),
"dns": newDNSResolver(),
"proquint": new(ProquintResolver),
"dht": newRoutingResolver(r),
},
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment