提交 1c7a5d19 作者: Steven Allen

resolve: succeed on recursion limit when not recursing

Otherwise, non-recursive resolution is pretty much useless.

License: MIT
Signed-off-by: 's avatarSteven Allen <steven@stebalien.com>
上级 fded3bc0
...@@ -71,10 +71,7 @@ The resolver can recursively resolve: ...@@ -71,10 +71,7 @@ The resolver can recursively resolve:
} }
output, err := resolver.Resolve(req.Context, name, ropts...) output, err := resolver.Resolve(req.Context, name, ropts...)
if err == namesys.ErrResolveFailed { if err != nil && (recursive || err != namesys.ErrResolveRecursion) {
return err
}
if err != nil {
return err return err
} }
return cmds.EmitOnce(res, &ncmd.ResolvedPath{Path: output}) return cmds.EmitOnce(res, &ncmd.ResolvedPath{Path: output})
......
...@@ -8,6 +8,7 @@ import ( ...@@ -8,6 +8,7 @@ import (
"time" "time"
cmdenv "github.com/ipfs/go-ipfs/core/commands/cmdenv" cmdenv "github.com/ipfs/go-ipfs/core/commands/cmdenv"
namesys "github.com/ipfs/go-ipfs/namesys"
cmdkit "github.com/ipfs/go-ipfs-cmdkit" cmdkit "github.com/ipfs/go-ipfs-cmdkit"
cmds "github.com/ipfs/go-ipfs-cmds" cmds "github.com/ipfs/go-ipfs-cmds"
...@@ -130,7 +131,7 @@ Resolve the value of a dnslink: ...@@ -130,7 +131,7 @@ Resolve the value of a dnslink:
if !stream { if !stream {
output, err := api.Name().Resolve(req.Context, name, opts...) output, err := api.Name().Resolve(req.Context, name, opts...)
if err != nil { if err != nil && (recursive || err != namesys.ErrResolveRecursion) {
return err return err
} }
...@@ -143,8 +144,8 @@ Resolve the value of a dnslink: ...@@ -143,8 +144,8 @@ Resolve the value of a dnslink:
} }
for v := range output { for v := range output {
if v.Err != nil { if v.Err != nil && (recursive || v.Err != namesys.ErrResolveRecursion) {
return err return v.Err
} }
if err := res.Emit(&ResolvedPath{path.FromString(v.Path.String())}); err != nil { if err := res.Emit(&ResolvedPath{path.FromString(v.Path.String())}); err != nil {
return err return err
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论