resolve: succeed on recursion limit when not recursing
Otherwise, non-recursive resolution is pretty much useless. License: MIT Signed-off-by: Steven Allen <steven@stebalien.com>
Steven Allen committed
Mar 15, 2019 at 19:22 UTC
1c7a5d1901d94f438d59e1165f650f2a76bde69e
2 files changed
+5
-7
core/commands/dns.go
+1
-4
@@ -71,10 +71,7 @@ The resolver can recursively resolve:
71
}
72
73
output, err := resolver.Resolve(req.Context, name, ropts...)
74
- if err == namesys.ErrResolveFailed {
75
- return err
76
- }
77
- if err != nil {
74
+ if err != nil && (recursive || err != namesys.ErrResolveRecursion) {
75
return err
76
}
77
return cmds.EmitOnce(res, &ncmd.ResolvedPath{Path: output})
core/commands/name/ipns.go
+4
-3
@@ -8,6 +8,7 @@ import (
8
"time"
9
10
cmdenv "github.com/ipfs/go-ipfs/core/commands/cmdenv"
11
+ namesys "github.com/ipfs/go-ipfs/namesys"
12
13
cmdkit "github.com/ipfs/go-ipfs-cmdkit"
14
cmds "github.com/ipfs/go-ipfs-cmds"
@@ -130,7 +131,7 @@ Resolve the value of a dnslink:
131
132
if !stream {
133
output, err := api.Name().Resolve(req.Context, name, opts...)
133
- if err != nil {
134
+ if err != nil && (recursive || err != namesys.ErrResolveRecursion) {
135
return err
136
}
137
@@ -143,8 +144,8 @@ Resolve the value of a dnslink:
144
}
145
146
for v := range output {
146
- if v.Err != nil {
147
- return err
147
+ if v.Err != nil && (recursive || v.Err != namesys.ErrResolveRecursion) {
148
+ return v.Err
149
}
150
if err := res.Emit(&ResolvedPath{path.FromString(v.Path.String())}); err != nil {
151
return err