From 772deca3e96c73f171962e9470c35923a6074701 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Magiera?= Date: Sat, 21 Jul 2018 14:58:16 +0200 Subject: [PATCH] Fix resolving links in sharded directories on gateway MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit License: MIT Signed-off-by: Ɓukasz Magiera --- path/resolver/resolver.go | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/path/resolver/resolver.go b/path/resolver/resolver.go index 05341655a..2aa247645 100644 --- a/path/resolver/resolver.go +++ b/path/resolver/resolver.go @@ -69,19 +69,25 @@ func (r *Resolver) ResolveToLastNode(ctx context.Context, fpath path.Path) (ipld } for len(p) > 0 { - val, rest, err := nd.Resolve(p) + lnk, rest, err := r.ResolveOnce(ctx, r.DAG, nd, p) if err != nil { return nil, nil, err } - switch val := val.(type) { - case *ipld.Link: - next, err := val.GetNode(ctx, r.DAG) + if lnk != nil { + next, err := lnk.GetNode(ctx, r.DAG) if err != nil { return nil, nil, err } nd = next p = rest + continue + } + + val, rest, err := nd.Resolve(p) + switch val.(type) { + case *ipld.Link: + return nil, nil, errors.New("inconsistent ResolveOnce / nd.Resolve") default: return nd, p, nil }