Max Inden e4d67c504d
fix(identify): Don't fail on unknown multiaddr protocol (#3279)
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 https://github.com/libp2p/rust-libp2p/issues/3244 for details.
2022-12-24 13:20:55 +00:00

200 lines
4.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 0.42.0 [unreleased]
- Update to `libp2p-core` `v0.39.0`.
- Move I/O from `Behaviour` to `Handler`. Handle `Behaviour`'s Identify and Push requests independently by incoming order,
previously Push requests were prioritized. see [PR 3208].
- Update to `libp2p-swarm` `v0.42.0`.
[PR 3208]: https://github.com/libp2p/rust-libp2p/pull/3208
# 0.41.1
- Skip invalid multiaddr in `listen_addrs`. See [PR 3246].
[PR 3246]: https://github.com/libp2p/rust-libp2p/pull/3246
# 0.41.0
- Change default `cache_size` of `Config` to 100. See [PR 2995].
- Update to `prost-codec` `v0.3.0`.
- Update to `libp2p-core` `v0.38.0`.
- Update to `libp2p-swarm` `v0.41.0`.
- Replace `Behaviour`'s `NetworkBehaviour` implemention `inject_*` methods with the new `on_*` methods.
See [PR 3011].
- Replace `Handler`'s `ConnectionHandler` implemention `inject_*` methods with the new `on_*` methods.
See [PR 3085].
- Update `rust-version` to reflect the actual MSRV: 1.62.0. See [PR 3090].
[PR 3085]: https://github.com/libp2p/rust-libp2p/pull/3085
[PR 3011]: https://github.com/libp2p/rust-libp2p/pull/3011
[PR 2995]: https://github.com/libp2p/rust-libp2p/pull/2995
[PR 3090]: https://github.com/libp2p/rust-libp2p/pull/3090
# 0.40.0
- Update dependencies.
- Rename types as per [discussion 2174].
`Identify` has been renamed to `Behaviour`.
The `Identify` prefix has been removed from various types like `IdentifyEvent`.
Users should prefer importing the identify protocol as a module (`use libp2p::identify;`),
and refer to its types via `identify::`. For example: `identify::Behaviour` or `identify::Event`.
[discussion 2174]: https://github.com/libp2p/rust-libp2p/discussions/2174
- Update to `libp2p-core` `v0.37.0`.
- Update to `libp2p-swarm` `v0.40.0`.
# 0.39.0
- Update to `libp2p-swarm` `v0.39.0`.
- Update to `libp2p-core` `v0.36.0`.
# 0.38.0
- Update prost requirement from 0.10 to 0.11 which no longer installs the protoc Protobuf compiler.
Thus you will need protoc installed locally. See [PR 2788].
- Update to `libp2p-swarm` `v0.38.0`.
- Expose `PROTOCOL_NAME` and `PUSH_PROTOCOL_NAME`. See [PR 2734].
- Update to `libp2p-core` `v0.35.0`.
[PR 2788]: https://github.com/libp2p/rust-libp2p/pull/2788
[PR 2734]: https://github.com/libp2p/rust-libp2p/pull/2734/
# 0.37.0
- Update to `libp2p-core` `v0.34.0`.
- Update to `libp2p-swarm` `v0.37.0`.
- Extend log message on second identify push stream with peer ID.
# 0.36.1
- Allow at most one inbound identify push stream.
# 0.36.0
- Update to `libp2p-core` `v0.33.0`.
- Update to `libp2p-swarm` `v0.36.0`.
- Expose explicits errors via `UpgradeError` instead of generic `io::Error`. See [PR 2630].
[PR 2630]: https://github.com/libp2p/rust-libp2p/pull/2630
# 0.35.0
- Update to `libp2p-swarm` `v0.35.0`.
# 0.34.0 [2022-02-22]
- Update to `libp2p-core` `v0.32.0`.
- Update to `libp2p-swarm` `v0.34.0`.
- Merge NetworkBehaviour's inject_\* paired methods (see PR 2445).
[PR 2445]: https://github.com/libp2p/rust-libp2p/pull/2445
# 0.33.0 [2022-01-27]
- Update dependencies.
- Migrate to Rust edition 2021 (see [PR 2339]).
[PR 2339]: https://github.com/libp2p/rust-libp2p/pull/2339
# 0.32.0 [2021-11-16]
- Use `futures-timer` instead of `wasm-timer` (see [PR 2245]).
- Filter invalid peers from cache used in `addresses_of_peer` [PR 2338].
- Update dependencies.
[PR 2245]: https://github.com/libp2p/rust-libp2p/pull/2245
[PR 2338]: https://github.com/libp2p/rust-libp2p/pull/2338
# 0.31.0 [2021-11-01]
- Make default features of `libp2p-core` optional.
[PR 2181](https://github.com/libp2p/rust-libp2p/pull/2181)
- Update dependencies.
- Assist in peer discovery by optionally returning reported listen addresses
of other peers from `addresses_of_peer` (see [PR
2232](https://github.com/libp2p/rust-libp2p/pull/2232)), disabled by default.
# 0.30.0 [2021-07-12]
- Update dependencies.
# 0.29.0 [2021-04-13]
- Add support for configurable automatic push to connected peers
on listen addr changes. Disabled by default.
[PR 2004](https://github.com/libp2p/rust-libp2p/pull/2004)
- Implement the `/ipfs/id/push/1.0.0` protocol.
cf. https://github.com/libp2p/specs/tree/master/identify#identifypush
[PR 1999](https://github.com/libp2p/rust-libp2p/pull/1999)
- Emit `IdentifyEvent::Pushed` event after successfully pushing identification
information to peer [PR
2030](https://github.com/libp2p/rust-libp2p/pull/2030).
# 0.28.0 [2021-03-17]
- Update `libp2p-swarm`.
- Update dependencies.
# 0.27.0 [2021-01-12]
- Update dependencies.
# 0.26.0 [2020-12-17]
- Update `libp2p-swarm` and `libp2p-core`.
# 0.25.0 [2020-11-25]
- Update `libp2p-swarm` and `libp2p-core`.
# 0.24.0 [2020-11-09]
- Update dependencies.
# 0.23.0 [2020-10-16]
- Update `libp2p-swarm` and `libp2p-core`.
# 0.22.0 [2020-09-09]
- Update `libp2p-swarm` and `libp2p-core`.
# 0.21.0 [2020-08-18]
- Bump `libp2p-core` and `libp2p-swarm` dependencies.
# 0.20.0 [2020-07-01]
- Updated dependencies.
# 0.19.2 [2020-06-22]
- Updated dependencies.