From e2bad6ec5e107691c10581067b20cff8e97086f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20Mur=C3=A9?= Date: Wed, 21 Feb 2018 18:41:40 +0100 Subject: [PATCH] make files stat --with-local return immediately when no data is present MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit License: MIT Signed-off-by: Michael Muré --- core/commands/files.go | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/core/commands/files.go b/core/commands/files.go index af0337cea..c07d199fe 100644 --- a/core/commands/files.go +++ b/core/commands/files.go @@ -125,7 +125,20 @@ var filesStatCmd = &cmds.Command{ return } - nd, err := getNodeFromPath(req.Context, node, path) + withLocal, _ := req.Options["with-local"].(bool) + + var dagserv ipld.DAGService + if withLocal { + // an offline DAGService will not fetch from the network + dagserv = dag.NewDAGService(bservice.New( + node.Blockstore, + offline.Exchange(node.Blockstore), + )) + } else { + dagserv = node.DAG + } + + nd, err := getNodeFromPath(req.Context, node, dagserv, path) if err != nil { res.SetError(err, cmdkit.ErrNormal) return @@ -137,18 +150,11 @@ var filesStatCmd = &cmds.Command{ return } - withLocal, _ := req.Options["with-local"].(bool) if !withLocal { res.Emit(o) return } - // an offline DAGService will not fetch from the network - dagserv := dag.NewDAGService(bservice.New( - node.Blockstore, - offline.Exchange(node.Blockstore), - )) - local, sizeLocal, err := walkBlock(req.Context, dagserv, nd) o.WithLocality = true @@ -321,7 +327,7 @@ var filesCpCmd = &oldcmds.Command{ dst += gopath.Base(src) } - nd, err := getNodeFromPath(req.Context(), node, src) + nd, err := getNodeFromPath(req.Context(), node, node.DAG, src) if err != nil { res.SetError(err, cmdkit.ErrNormal) return @@ -345,7 +351,7 @@ var filesCpCmd = &oldcmds.Command{ }, } -func getNodeFromPath(ctx context.Context, node *core.IpfsNode, p string) (ipld.Node, error) { +func getNodeFromPath(ctx context.Context, node *core.IpfsNode, dagservice ipld.DAGService, p string) (ipld.Node, error) { switch { case strings.HasPrefix(p, "/ipfs/"): np, err := path.ParsePath(p) @@ -354,7 +360,7 @@ func getNodeFromPath(ctx context.Context, node *core.IpfsNode, p string) (ipld.N } resolver := &resolver.Resolver{ - DAG: node.DAG, + DAG: dagservice, ResolveOnce: uio.ResolveUnixfsOnce, }