From 03debb9278b68034d6d7fbc0376750ba7694fd7f Mon Sep 17 00:00:00 2001 From: Adin Schmahmann Date: Mon, 22 May 2023 11:34:59 -0400 Subject: [PATCH] fix(gateway): CAR linksystem fixes --- gateway/blocks_gateway.go | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/gateway/blocks_gateway.go b/gateway/blocks_gateway.go index 8d68d03e0..6375f8543 100644 --- a/gateway/blocks_gateway.go +++ b/gateway/blocks_gateway.go @@ -262,6 +262,7 @@ func (api *BlocksGateway) GetCAR(ctx context.Context, p ImmutablePath, params Ca lsys := cidlink.DefaultLinkSystem() unixfsnode.AddUnixFSReificationToLinkSystem(&lsys) + lsys.StorageReadOpener = blockOpener(ctx, blockGetter) // TODO: support selectors passed as request param: https://github.com/ipfs/kubo/issues/8769 // TODO: this is very slow if blocks are remote due to linear traversal. Do we need deterministic traversals here? @@ -304,8 +305,10 @@ func walkGatewaySimpleSelector(ctx context.Context, p ipfspath.Path, params CarP progress := traversal.Progress{ Cfg: &traversal.Config{ - Ctx: ctx, - LinkSystem: *lsys, + Ctx: ctx, + LinkSystem: *lsys, + LinkTargetNodePrototypeChooser: bsfetcher.DefaultPrototypeChooser, + LinkVisitOnlyOnce: true, // This is safe for the "all" selector }, }