Allow resolution of .eth names via .eth.link
Jim McDonald committed
Jun 13, 2019 at 15:08 UTC
1a9ff602464b04cef2a483672138786058d593a2
1 file changed
+8
namesys/namesys.go
+8
@@ -80,6 +80,9 @@ func (ns *mpns) ResolveAsync(ctx context.Context, name string, options ...opts.R
80
return resolveAsync(ctx, ns, name, opts.ProcessOpts(options))
81
}
82
83
+const ethTLD = ".eth"
84
+const linkTLD = ".link"
85
+
86
// resolveOnce implements resolver.
87
func (ns *mpns) resolveOnceAsync(ctx context.Context, name string, options opts.ResolveOpts) <-chan onceResult {
88
out := make(chan onceResult, 1)
@@ -87,6 +90,11 @@ func (ns *mpns) resolveOnceAsync(ctx context.Context, name string, options opts.
90
if !strings.HasPrefix(name, ipnsPrefix) {
91
name = ipnsPrefix + name
92
}
93
+ if strings.HasSuffix(name, ethTLD) {
94
+ // This is an ENS name. As we're resolving via an arbitrary DNS server
95
+ // that may not know about .eth we need to add our link domain suffix.
96
+ name = name + linkTLD
97
+ }
98
segments := strings.SplitN(name, "/", 4)
99
if len(segments) < 3 || segments[0] != "" {
100
log.Debugf("invalid name syntax for %s", name)