Skip to content

Bitswap problems over websocket transport since switch to nhooyr websocket #2188

@hannahhoward

Description

@hannahhoward

Bug: attempting to fetch UnixFS files over bitswap with peers that only expose websockets will fail on large blocks. Note: this is all of Elastic IPFS/Web3.storage

Steps To Reproduce:

Build Kubo v0.18.0:

Start the daemon:

./cmd/ipfs/ipfs daemon
./cmd/ipfs/ipfs get bafybeiarntxetfbzpyp7baj7kqvqljrn5uyoobq2y4b3zegbbem5joazgy 

This is a CID I stored on web3.storage. It works.

Now switch to Kubo master and do the same. It now hangs.

Heavy debugging identifies the following error generated in the websocket conn: failed to read: read limited at 32769 bytes -- this comes from here I believe: https://github.com/nhooyr/websocket/blob/master/read.go#L385

Note that actually everything works fine until we get to the first 1MB raw block, I assume because it's over that limit.

This was originally discovered in Lassie and in debugging why it couldn't fetch while Kubo 0.18.0 could, I found that Kubo master couldn't either.

Metadata

Metadata

Assignees

Labels

P0Critical: Tackled by core team ASAPkind/bugA bug in existing code (including security flaws)

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions