Add support for additional protocols, e..g transport-ipfs-gateway-http
#73
Labels
dif/expert
Extensive knowledge (implications, ramifications) required
effort/weeks
Estimated to take multiple weeks
P2
Medium: Good to have, but can wait until someone steps up
status/blocked
Unable to be worked further until needs are met
Background
Currently ipfs-check is limited to supporting Bitswap checks. It would be useful to add support for other transfer protocols that are already prolific, e.g.
transport-ipfs-gateway-http
, for which there are many providers in the IPNI.Part of this should include allowing users in the UI to choose which protocols to test as part of the check.
Checking HTTP providers
As discussed in #70,
Challenges
existing interfaces
We currently rely on the
FindProvidersAsync(context.Context, cid.Cid, int) <-chan peer.AddrInfo
method to handle getting providers from both the IPNI and the DHT concurrently. The challenge is that we don't have protocol information in that channel. We will likely need a helper method to convert the iterator from the Routing V1 client into a channel that returns results (rather thanpeer.AddrInfo
) so that we can rely on the same concurrency primitives while having the protocol information.Problems with
transport-ipfs-gateway-http
providersLet's take the example you gave of the CID:
bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi
.It has two providers with the
"transport-ipfs-gateway-http"
protocol:A couple of problems with this one specifically:
A deeper investigation revealed that this is a Boost server, which uses frisbii as its gateway server which doesn't support HEAD
only-if-cached
requests. I have opened an issue for that.The text was updated successfully, but these errors were encountered: