@cryptotaxi247 / kubo / commits / 772deca3e

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 }