Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(identify): Don't fail on unknown multiaddr protocol #3279

Merged
merged 5 commits into from
Dec 24, 2022

Conversation

mxinden
Copy link
Member

@mxinden mxinden commented Dec 23, 2022

Description

With this commit libp2p-identify no longer discards the whole identify payload in case a listen addr of the remote node is invalid, but instead logs the failure, skips the invalid multiaddr and parses the remaining identify payload.

This is especially relevant when rolling out a new protocol to a live network. Say that most nodes of a network run on an implementation version v1. Say that the multiaddr implementation is not aware of the webrtc/ protocol. Say that a new version (v2) is rolled out to the network with support for the webrtc/ protocol, listening via webrtc/ by default. In such case all v1 nodes would discard all identify payloads of v2 nodes, given that the v2 identify payloads would contain the webrtc/ protocol in their listen_addr addresses.

See #3244 for details.

Notes

Brings #3246 merged into v0.50 into master.

Links to any relevant issues

Open Questions

Change checklist

  • I have performed a self-review of my own code
  • I have made corresponding changes to the documentation
  • I have added tests that prove my fix is effective or that my feature works
  • A changelog entry has been made in the appropriate crates

With this commit `libp2p-identify` no longer discards the whole identify payload in case a listen
addr of the remote node is invalid, but instead logs the failure, skips the invalid multiaddr and
parses the remaining identify payload.

> This is especially relevant when rolling out a new protocol to a live network. Say that most nodes
> of a network run on an implementation version v1. Say that the `multiaddr` implementation is not
> aware of the `webrtc/` protocol. Say that a new version (v2) is rolled out to the network with
> support for the `webrtc/` protocol, listening via `webrtc/` by default. In such case all v1 nodes
> would discard all identify payloads of v2 nodes, given that the v2 identify payloads would contain
> the `webrtc/` protocol in their `listen_addr` addresses.

See libp2p#3244 for details.
@mergify mergify bot merged commit e4d67c5 into libp2p:master Dec 24, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants