Skip to content

identify: Exchange fails with go-libp2p over QUIC when initialy closing #3298

Open
@mxinden

Description

To receive a remote's identify information one opens a stream and waits for the remote to send the identify payload in that stream.

When connecting to a go-libp2p node over a QUIC connection, identify exchanges fail.

async fn recv<T>(mut socket: T) -> Result<Info, UpgradeError>
where
T: AsyncRead + AsyncWrite + Unpin,
{
socket.close().await?;

Changing the above to flush instead of close resolves the issue. Note that flushing instead of no action at all is needed in case multistream-select V1Lazy is used where the multistream-select message is only send on the stream once userdata is send or it is flushed.

Occurs with the rust-libp2p punchr client when connecting to go-libp2p IPFS nodes.

Opening with little details for now to have a central place to track. @elenaf9 in case you need more details, let me know.

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions