libp2p / libp2p/rust-libp2p

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

Open
#3,298 3 comments 0 reactions 1 assignee View on GitHub

@elenaf9 is already working on this.

Since Jan 2, 2023.

bug difficulty:moderate
Dominant language
Rust
Stars
5.6k
Forks
1.3k
Avg merge
8h 47m
Merged PRs (30d)
19

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.

https://github.com/libp2p/rust-libp2p/blob/68d0f882bd7fc0b4a83a11d0d034ae9f085f3e62/protocols/identify/src/protocol.rs#L192-L196

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.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.