chore: allow custom resolver for dns discovery (#930)

This commit is contained in:
kaichao 2023-11-29 18:16:28 +08:00 committed by GitHub
parent e1266b836b
commit 28107bd307
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -15,6 +15,7 @@ import (
type dnsDiscoveryParameters struct { type dnsDiscoveryParameters struct {
nameserver string nameserver string
resolver dnsdisc.Resolver
} }
type DNSDiscoveryOption func(*dnsDiscoveryParameters) type DNSDiscoveryOption func(*dnsDiscoveryParameters)
@ -26,6 +27,12 @@ func WithNameserver(nameserver string) DNSDiscoveryOption {
} }
} }
func WithResolver(resolver dnsdisc.Resolver) DNSDiscoveryOption {
return func(params *dnsDiscoveryParameters) {
params.resolver = resolver
}
}
type DiscoveredNode struct { type DiscoveredNode struct {
PeerID peer.ID PeerID peer.ID
PeerInfo peer.AddrInfo PeerInfo peer.AddrInfo
@ -52,8 +59,12 @@ func RetrieveNodes(ctx context.Context, url string, opts ...DNSDiscoveryOption)
opt(params) opt(params)
} }
if params.resolver == nil {
params.resolver = GetResolver(ctx, params.nameserver)
}
client := dnsdisc.NewClient(dnsdisc.Config{ client := dnsdisc.NewClient(dnsdisc.Config{
Resolver: GetResolver(ctx, params.nameserver), Resolver: params.resolver,
}) })
tree, err := client.SyncTree(url) tree, err := client.SyncTree(url)