diff --git a/node/modules/graphsync.go b/node/modules/graphsync.go index 656e19b82..4197d6ca2 100644 --- a/node/modules/graphsync.go +++ b/node/modules/graphsync.go @@ -70,8 +70,10 @@ func (p *LinkSystemProv) LinkSys() *ipld.LinkSystem { } func SetLinkSystem(proxy *LinkSystemProv, prov provider.Interface) { - e := prov.(*engine.Engine) - proxy.LinkSystem = e.LinkSystem() + e, ok := prov.(*engine.Engine) + if ok { + proxy.LinkSystem = e.LinkSystem() + } } // RetrievalGraphsync creates a graphsync instance used to serve retrievals. diff --git a/retrievalmarket/server/gsunpaidretrieval.go b/retrievalmarket/server/gsunpaidretrieval.go index 2f97a6289..6740a3d2d 100644 --- a/retrievalmarket/server/gsunpaidretrieval.go +++ b/retrievalmarket/server/gsunpaidretrieval.go @@ -120,7 +120,7 @@ func (g *GraphsyncUnpaidRetrieval) Start(ctx context.Context) error { g.ctx = ctx g.validator.ctx = ctx - if g.linkSystem != nil { + if g.linkSystem != nil && g.linkSystem.LinkSys() != nil { // The index provider uses graphsync to fetch advertisements. // We need to tell graphsync to use a different IPLD Link System to provide // the advertisements (instead of using the blockstore).