diff --git a/CHANGELOG.md b/CHANGELOG.md index f75014cbd..64993ffc7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,7 @@ The following emojis are used to highlight certain changes: ### Added +- `ipld/unixfs`: `DagModifier` now allows specifying file DAG Width (`MaxLinks`) [#898](https://github.com/ipfs/boxo/pull/898) - `provider`: added support for walking partial DAGs in offline mode [#905](https://github.com/ipfs/boxo/pull/905) - a `KeyChanFunc` that traverses DAGs from a given root (`NewDAGProvider`). - a `KeyChanFunc` that buffers all the CIDs in memory from another `KeyChanFunc` (`NewBufferedProvider`). diff --git a/ipld/unixfs/mod/dagmodifier.go b/ipld/unixfs/mod/dagmodifier.go index e3a5b7c60..f426512f7 100644 --- a/ipld/unixfs/mod/dagmodifier.go +++ b/ipld/unixfs/mod/dagmodifier.go @@ -46,6 +46,7 @@ type DagModifier struct { Prefix cid.Prefix RawLeaves bool + MaxLinks int read uio.DagReader } @@ -76,6 +77,7 @@ func NewDagModifier(ctx context.Context, from ipld.Node, serv ipld.DAGService, s ctx: ctx, Prefix: prefix, RawLeaves: rawLeaves, + MaxLinks: help.DefaultLinksPerBlock, }, nil } @@ -358,7 +360,7 @@ func (dm *DagModifier) appendData(nd ipld.Node, spl chunker.Splitter) (ipld.Node case *mdag.ProtoNode, *mdag.RawNode: dbp := &help.DagBuilderParams{ Dagserv: dm.dagserv, - Maxlinks: help.DefaultLinksPerBlock, + Maxlinks: dm.MaxLinks, CidBuilder: dm.Prefix, RawLeaves: dm.RawLeaves, } diff --git a/ipld/unixfs/mod/dagmodifier_test.go b/ipld/unixfs/mod/dagmodifier_test.go index ebbc98b10..ab69374ef 100644 --- a/ipld/unixfs/mod/dagmodifier_test.go +++ b/ipld/unixfs/mod/dagmodifier_test.go @@ -8,7 +8,6 @@ import ( dag "github.com/ipfs/boxo/ipld/merkledag" "github.com/ipfs/boxo/ipld/unixfs" - h "github.com/ipfs/boxo/ipld/unixfs/importer/helpers" trickle "github.com/ipfs/boxo/ipld/unixfs/importer/trickle" uio "github.com/ipfs/boxo/ipld/unixfs/io" testu "github.com/ipfs/boxo/ipld/unixfs/test" @@ -46,7 +45,7 @@ func verifyNode(t *testing.T, orig []byte, dm *DagModifier, opts testu.NodeOpts) err = trickle.VerifyTrickleDagStructure(nd, trickle.VerifyParams{ Getter: dm.dagserv, - Direct: h.DefaultLinksPerBlock, + Direct: dm.MaxLinks, LayerRepeat: 4, Prefix: &opts.Prefix, RawLeaves: opts.RawLeavesUsed,