When js-libp2p connects to a listener, it starts by sending out /multistream-select/1.0.0, then waits for the remote to send back /multistream-select/1.0.0, then only sends out the requested protocol.
However, the rust-libp2p listener reads /multistream-select/1.0.0, then sends out /multistream-select/1.0.0, but doesn't immediately flush that to the TCP socket. It only flushes after having sent back an answer to the requested protocol.
cc @raulk @romanb
When js-libp2p connects to a listener, it starts by sending out
/multistream-select/1.0.0, then waits for the remote to send back/multistream-select/1.0.0, then only sends out the requested protocol.However, the rust-libp2p listener reads
/multistream-select/1.0.0, then sends out/multistream-select/1.0.0, but doesn't immediately flush that to the TCP socket. It only flushes after having sent back an answer to the requested protocol.cc @raulk @romanb