Fix resolving links in sharded directories on gateway
License: MIT Signed-off-by: Łukasz Magiera <magik6k@gmail.com>
Łukasz Magiera committed
Jul 21, 2018 at 14:58 UTC
772deca3e96c73f171962e9470c35923a6074701
1 file changed
+10
-4
path/resolver/resolver.go
+10
-4
@@ -69,19 +69,25 @@ func (r *Resolver) ResolveToLastNode(ctx context.Context, fpath path.Path) (ipld
69
}
70
71
for len(p) > 0 {
72
- val, rest, err := nd.Resolve(p)
72
+ lnk, rest, err := r.ResolveOnce(ctx, r.DAG, nd, p)
73
if err != nil {
74
return nil, nil, err
75
}
76
77
- switch val := val.(type) {
78
- case *ipld.Link:
79
- next, err := val.GetNode(ctx, r.DAG)
77
+ if lnk != nil {
78
+ next, err := lnk.GetNode(ctx, r.DAG)
79
if err != nil {
80
return nil, nil, err
81
}
82
nd = next
83
p = rest
84
+ continue
85
+ }
86
+
87
+ val, rest, err := nd.Resolve(p)
88
+ switch val.(type) {
89
+ case *ipld.Link:
90
+ return nil, nil, errors.New("inconsistent ResolveOnce / nd.Resolve")
91
default:
92
return nd, p, nil
93
}