libp2p/js-libp2p-spdy
View on GitHubgo-libp2p-spdy has problems - Can not send objects to go, if they are larger than 64k
Open
#48 opened on Dec 23, 2016
bugdifficulty:hardhelp wantedready
Repository metrics
- Stars
- (10 stars)
- PR merge metrics
- (PR metrics pending)
Description
I've been tracking this issue for some time now, and it looks like this is due to spdystream (go implementation of spdy being used) not support flow control.
But lets start from the beginning.
- Sending files from js to go ipfs works fine for files less than
63k, but starts suddenly failing at anything larger. - Looking into the logs, go-ipfs bitswap never receives the block we are sending
- Looking into spdy it turns out it never emits the message we sent to the layer above.
- It turns out the INITIAL_FLOW_CONTROL_WINDOW_SIZE is set at
64k, which spdy-stream (js impl) follows. But with larger buffers it starts using the flow control features of spdy. - It turns out there is an open issue to support flow control on spdystream, and as it does not implement it is not able to handle the frames spdy-transport is sending. https://github.com/docker/spdystream/issues/2