2425 Commits

Author SHA1 Message Date
Max Inden
d9f1c71b2a
misc/multistream-select: Cleanup trait bounds and remove unused file (#2067)
* misc/multistream-select: Remove unused file error.rs

* misc/multistream-select: Remove unnecessary trait bounds
2021-05-17 13:13:35 +02:00
Max Inden
0b7ee3fa92
*: Prepare v0.38.0 (#2072) 2021-05-17 12:43:24 +02:00
Age Manning
c5bcada2c2
protocols/gossipsub: Rework connection keep-alive (#2043)
Keep connections to peers in a mesh alive. Allow closing idle connections to
peers not in a mesh.

Co-authored-by: Max Inden <mail@max-inden.de>
2021-05-14 09:16:50 +02:00
dependabot[bot]
9c5dd84099
build(deps): Update snow requirement from 0.7.1 to 0.8.0 (#2068)
* build(deps): Update snow requirement from 0.7.1 to 0.8.0

Updates the requirements on [snow](https://github.com/mcginty/snow) to permit the latest version.
- [Release notes](https://github.com/mcginty/snow/releases)
- [Commits](https://github.com/mcginty/snow/compare/v0.7.1...v0.8.0)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Max Inden <mail@max-inden.de>
2021-05-12 18:33:31 +02:00
dependabot[bot]
1fdac073fc
build(deps): Bump actions-rs/toolchain from 1 to 1.0.7 (#2069)
Bumps [actions-rs/toolchain](https://github.com/actions-rs/toolchain) from 1 to 1.0.7.
- [Release notes](https://github.com/actions-rs/toolchain/releases)
- [Changelog](https://github.com/actions-rs/toolchain/blob/master/CHANGELOG.md)
- [Commits](https://github.com/actions-rs/toolchain/compare/v1...v1.0.7)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-05-12 14:05:10 +02:00
dependabot[bot]
10fcc1c485
build(deps): Bump actions-rs/cargo from 1 to 1.0.3 (#2070)
Bumps [actions-rs/cargo](https://github.com/actions-rs/cargo) from 1 to 1.0.3.
- [Release notes](https://github.com/actions-rs/cargo/releases)
- [Changelog](https://github.com/actions-rs/cargo/blob/master/CHANGELOG.md)
- [Commits](https://github.com/actions-rs/cargo/compare/v1...v1.0.3)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-05-12 12:04:46 +02:00
dependabot[bot]
82c8b1a4b3
build(deps): Bump actions/checkout from 2 to 2.3.4 (#2071)
Bumps [actions/checkout](https://github.com/actions/checkout) from 2 to 2.3.4.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v2...v2.3.4)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-05-12 11:12:41 +02:00
Max Inden
43a8ad8fc2
protocols/relay/examples: Add client server instructions (#2060)
Add instructions on how to run a three node example where a listening
relay client listens via a relay server and a dialing relay client dials
the listening relay client via the relay server.
2021-05-10 15:39:56 +02:00
David Craven
8988ac247e
protocols/mdns: Fix discovered event emission. (#2065)
mdns keeps rediscovering nodes. this PR changes that to only emit events for new
nodes it discovered. In addition we make sure to only send a query if it is
really needed. Some logging is added for debugging purposes.
2021-05-06 17:08:29 +02:00
dependabot[bot]
5c541a16f1
build(deps): update salsa20 requirement from 0.7 to 0.8 (#2062)
* build(deps): update salsa20 requirement from 0.7 to 0.8

Updates the requirements on [salsa20](https://github.com/RustCrypto/stream-ciphers) to permit the latest version.
- [Release notes](https://github.com/RustCrypto/stream-ciphers/releases)
- [Commits](https://github.com/RustCrypto/stream-ciphers/compare/ctr-v0.7.0...salsa20-v0.8.0)

Signed-off-by: dependabot[bot] <support@github.com>

* *: Update changelog and cargo tomls

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Max Inden <mail@max-inden.de>
2021-04-30 10:09:13 +02:00
Andre-Philippe Paquet
d931f36428
transport/wasm-ext: Support dialing Multiaddr with /p2p protocol (#2058)
Changes in 45f07bf8 now seem to append `/p2p/<peer>` to multiaddr passed to
transports. The regex in transport/wasm-ext doesn't support this fully qualified
format. This commit adjusts the regex accordingly.
2021-04-27 19:28:53 +02:00
Tomas Zemanovic
6257a8d402
protocols/gossipsub: Remove regex-filter feature flag (#2056)
Remove `regex-filter` feature flag thus always enabling
`regex::RegexSubscriptionFilter`.
2021-04-27 15:00:13 +02:00
Artem Vorotnikov
5ee003b76e
core/src/identity: Fix build with secp256k1 disabled (#2057) 2021-04-26 16:53:50 +02:00
David Craven
29d969be34
protocols/mdns: Fix timely discovery after listening on new address (#2053)
If you start listening after mdns joined a multicast group, the peers may not
discover eachother until the 5min timeout expires.

Co-authored-by: Max Inden <mail@max-inden.de>
2021-04-21 16:07:38 +02:00
Max Inden
40c4287bc9
*: Prepare libp2p-swarm-derive v0.23.0 and libp2p v0.37.1 2021-04-14 20:25:16 +02:00
Max Inden
42441dbd86
*: Prepare v0.37.0 release (#2049) 2021-04-13 20:15:15 +02:00
dependabot[bot]
807ce10656
build(deps): bump actions/cache from v2.1.4 to v2.1.5 (#2050)
Bumps [actions/cache](https://github.com/actions/cache) from v2.1.4 to v2.1.5.
- [Release notes](https://github.com/actions/cache/releases)
- [Commits](https://github.com/actions/cache/compare/v2.1.4...1a9e2138d905efd099035b49d8b7a3888c653ca8)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-04-13 14:32:43 +02:00
David Craven
05aa794552
Derive debug for RelayConfig. (#2048)
Co-authored-by: Max Inden <mail@max-inden.de>
2021-04-12 22:30:09 +02:00
dependabot[bot]
426a20c66b
Update yamux requirement from 0.8.0 to 0.9.0 (#1960)
* Update yamux requirement from 0.8.0 to 0.9.0

Updates the requirements on [yamux](https://github.com/paritytech/yamux) to permit the latest version.
- [Release notes](https://github.com/paritytech/yamux/releases)
- [Changelog](https://github.com/paritytech/yamux/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/paritytech/yamux/commits)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Max Inden <mail@max-inden.de>
2021-04-12 22:06:01 +02:00
Max Inden
8ccb96a9f3
*: Drop generic wasm32-unknown-unknown support (#2038)
With `rand` `v0.8.0` platform support changed [1] due to its upgrade to
`getrandom` `v0.2`. With `getrandom` `v0.2` `wasm32-unknown-unknown` is no
longer supported out of the box:

> This crate fully supports the wasm32-wasi and wasm32-unknown-emscripten
> targets. However, the wasm32-unknown-unknown target is not automatically
> supported since, from the target name alone, we cannot deduce which JavaScript
> interface is in use (or if JavaScript is available at all).
>
> Instead, if the "js" Cargo feature is enabled, this crate will assume that you
> are building for an environment containing JavaScript, and will call the
> appropriate methods. Both web browser (main window and Web Workers) and
> Node.js environments are supported, invoking the methods described above using
> the wasm-bindgen toolchain.
>
> This feature has no effect on targets other than wasm32-unknown-unknown.

This commit drops support for wasm32-unknown-unknown in favor of the two more
specific targets wasm32-wasi and wasm32-unknown-emscripten.

Note on `resolver = "2"`: The new resolver is required to prevent features
being mixed, more specifically to prevent libp2p-noise to build with the
`ring-resolver` feature. See [3] for details.

---

[1] https://github.com/rust-random/rand/blob/master/CHANGELOG.md#platform-support
[2] https://docs.rs/getrandom/0.2.2/getrandom/#webassembly-support
[3] https://doc.rust-lang.org/nightly/cargo/reference/features.html#feature-resolver-version-2
2021-04-12 21:41:48 +02:00
David Craven
687145d784
protocols: Derive debug for MemoryStoreConfig and IdentifyConfig (#2029) 2021-04-12 13:30:30 +02:00
dependabot[bot]
b1b6f2bafe
build(deps): bump styfle/cancel-workflow-action from 0.8.0 to 0.9.0 (#2045)
Bumps [styfle/cancel-workflow-action](https://github.com/styfle/cancel-workflow-action) from 0.8.0 to 0.9.0.
- [Release notes](https://github.com/styfle/cancel-workflow-action/releases)
- [Commits](https://github.com/styfle/cancel-workflow-action/compare/0.8.0...89f242ee29e10c53a841bfe71cc0ce7b2f065abc)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-04-12 10:16:14 +02:00
Max Inden
de261d5280
.github: Only test benchmarks, don't run them (#2042)
Instead of fully executing benchmarks, i.e. running multiple iterations,
each measured and recorded, only test that they compile and run them
with a single execution to make sure they work. The benefit is a reduced
CI runtime.

Flag documentation:

> To test that the benchmarks run successfully without performing the
measurement or analysis (eg. in a CI setting), use cargo test --benches.

https://bheisler.github.io/criterion.rs/book/user_guide/command_line_options.html

The above assumes that (a) the benchmark results from CI are likely
noisy and thus (b) no one actually looks at the benchmark results.
2021-04-10 22:25:11 +02:00
Max Inden
2d995a62e7
*: Fix redundant_semicolons warnings (#2039) 2021-04-10 21:40:06 +02:00
Max Inden
7cf8ac0862
protocols/identify: Emit Push event after successful identification push (#2030) 2021-04-10 19:46:57 +02:00
OnikenX
6fdfb44a54
examples/chat-tokio: Fix run example feature (#2037) 2021-04-09 18:54:23 +02:00
Thomas Eizinger
385af35047
Implement std::error::Error for InboundFailure and OutboundFailure (#2033)
Co-authored-by: Max Inden <mail@max-inden.de>
2021-04-08 13:14:34 +02:00
Max Inden
7386fd7fd8
README: Link to Code of Conduct (#2028) 2021-04-06 14:10:25 +02:00
Max Inden
48f3f0606c
transports/dns: Prepave v0.28.1 2021-04-01 16:16:07 +02:00
Pierre Krieger
2017c5c73a
transports/dns: Remove fqdn function optimization (#2027)
Co-authored-by: Max Inden <mail@max-inden.de>
2021-04-01 16:11:36 +02:00
Max Inden
a2e774992d
src: Move introduction to new tutorial.rs (#2018)
This commit extends the ping example in `src/tutorial.rs, by walking a
newcomer through the implementation of a simple ping node step-by-step,
introducing all the core libp2p concepts along the way.

With the ping tutorial in place, there is no need for the lengthy libp2p
crate level introduction, which is thus removed with this commit.

Co-authored-by: Roman Borschel <romanb@users.noreply.github.com>
2021-04-01 15:46:41 +02:00
Max Inden
a0bdc206dc
transports/wasm-ext: Prepare v0.28.1 2021-04-01 14:28:32 +02:00
David
c0f74aa408
transports/wasm-ext: Require at least js-sys v0.3.50 (#2023) 2021-04-01 14:25:27 +02:00
dependabot[bot]
bb2df42019
build(deps): update derive_builder requirement from 0.9.0 to 0.10.0 (#2026)
* build(deps): update derive_builder requirement from 0.9.0 to 0.10.0

Updates the requirements on [derive_builder](https://github.com/colin-kiegel/rust-derive-builder) to permit the latest version.
- [Release notes](https://github.com/colin-kiegel/rust-derive-builder/releases)
- [Commits](https://github.com/colin-kiegel/rust-derive-builder/compare/v0.9.0...v0.10.0)

Signed-off-by: dependabot[bot] <support@github.com>

* protocols/gossipsub/CHANGELOG: Add entry

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Max Inden <mail@max-inden.de>
2021-04-01 13:57:29 +02:00
Max Inden
bb206bcfdb
swarm/CHANGELOG: Add entry for NetworkBehaviour callbacks 2021-03-24 17:33:15 +01:00
David Craven
7779b8e2c1
swarm: Extend NetworkBehaviour callbacks. (#2011)
Co-authored-by: Max Inden <mail@max-inden.de>
2021-03-24 17:21:53 +01:00
Roman S. Borschel
be2fb4ea8a Update mdns changelog. 2021-03-23 09:54:04 +01:00
David Craven
987c244f09
Derive Clone, Debug. (#2007)
Co-authored-by: Roman Borschel <romanb@users.noreply.github.com>
2021-03-23 09:53:06 +01:00
Max Inden
ba90827e46
core: Update to asn1_der v0.7 (#2000) 2021-03-22 13:53:47 +01:00
Max Inden
a735e5258e
transports/dns: Require smallvec >= 1.6.1 (#2005)
Co-authored-by: Roman Borschel <romanb@users.noreply.github.com>
2021-03-22 11:24:16 +01:00
Roman Borschel
c8d69ab2e2
[identify] Add configurable automatic push on listen addr changes. (#2004)
* Add configurable automatic push of listen addr changes.

* Update changelog and cleanup.
2021-03-22 10:53:30 +01:00
Max Inden
63512e5f16
swarm/src/lib: Remove Deref and DerefMut impls on Swarm (#1995)
Remove `Deref` and `DerefMut` implementations previously dereferencing
to the `NetworkBehaviour` on `Swarm`. Instead one can access the
`NetworkBehaviour` via `Swarm::behaviour` and `Swarm::behaviour_mut`.
Methods on `Swarm` can now be accessed directly, e.g. via
`my_swarm.local_peer_id()`.

Reasoning: Accessing the `NetworkBehaviour` of a `Swarm` through `Deref`
and `DerefMut` instead of a method call is an unnecessary complication,
especially for newcomers. In addition, `Swarm` is not a smart-pointer
and should thus not make use of `Deref` and `DerefMut`, see documentation
from the standard library below.

> Deref should only be implemented for smart pointers to avoid
confusion.

https://doc.rust-lang.org/std/ops/trait.Deref.html
2021-03-18 14:55:33 +01:00
Roman Borschel
5a45f93fc2
[identify] Implement /ipfs/id/push/1.0.0 alongside some refactoring. (#1999)
* Implement /ipfs/id/push/1.0.0 alongside some refactoring.

  * Implement /ipfs/id/push/1.0.0, i.e. the ability to actively
    push information of the local peer to specific remotes.
  * Make the initial delay as well as the recurring delay
    for the periodic identification requests configurable,
    introducing `IdentifyConfig`.

* Fix test.

* Fix example.

* Update protocols/identify/src/identify.rs

Co-authored-by: Max Inden <mail@max-inden.de>

* Update protocols/identify/src/identify.rs

Co-authored-by: Max Inden <mail@max-inden.de>

* Update versions and changelogs.

Co-authored-by: Max Inden <mail@max-inden.de>
2021-03-18 12:47:01 +01:00
Rüdiger Klaehn
24b3e09b39
Update README.md (#2003)
Add notable users:

- ipfs-embed. Rust IPFS implementation with a focus on being embeddable into rust applications
- actyx, platform for writing manufacturing applications, based on rust-libp2p
2021-03-18 11:50:31 +01:00
Max Inden
16018643cf
core/: Prepare libp2p-core v0.28.1 incl multiaddr v0.11.2
libp2p-dns requires a new feature in parity-multiaddr v0.11.2 namely
Multiaddr::ends_with. libp2p-dns does not depend on parity-multiaddr
directly but through libp2p-core. Prepare a new version of libp2p-core
requiring at least parity-multiaddr v0.11.2 and update libp2p-dns to
require libp2p-core v0.28.1.
2021-03-17 16:39:18 +01:00
Max Inden
0934b0178d
*: Prepare v0.36.0 release 2021-03-17 15:28:13 +01:00
Roman Borschel
45f07bf863
[libp2p-dns] Implement /dnsaddr resolution. (#1931)
* Implement `/dnsaddr` support on `libp2p-dns`.

To that end, since resolving `/dnsaddr` addresses needs
"fully qualified" multiaddresses when dialing, i.e. those
that end with the `/p2p/...` protocol, we make sure that
dialing always uses such fully qualified addresses by
appending the `/p2p` protocol as necessary. As a side-effect,
this adds support for dialing peers via "fully qualified"
addresses, as an alternative to using a `PeerId` together
with a `Multiaddr` with or without the `/p2p` protocol.

* Adapt libp2p-relay.

* Update versions, changelogs and small cleanups.
2021-03-17 10:53:19 +01:00
Max Inden
c1f75eee81
README: Express preference for Github discussions for questions (#1996)
* README: Express preference for Github issues for questions

* README: Remove IRC and mention Discussions forum

Co-authored-by: Roman Borschel <romanb@users.noreply.github.com>
2021-03-16 15:14:17 +01:00
Max Inden
c6a21047d7
protocols/relay: Ignore IdentifyEvent::Error (#2001)
Co-authored-by: Roman Borschel <romanb@users.noreply.github.com>
2021-03-16 13:22:42 +01:00
Roman Borschel
cd15bc9c62
[libp2p-dns] Use trust-dns-resolver (with either async-std or tokio). Remove thread pool. (#1927)
* [libp2p-dns] Use trust-dns-resolver.

Use the `trust-dns-resolver` library for DNS resolution,
thereby removing current use of the thread pool.

Since `trust-dns-resolver` and related crates already
provide support for both `async-std` and `tokio`, we
make use of that here in our own feature flags.

Since `trust-dns-resolver` provides many useful
configuration options and error detail, central
types of `trust-dns-resolver` like `ResolverConfig`,
`ResolverOpts` and `ResolveError` are re-exposed
in the API of `libp2p-dns`. Full encapsulation
does not seem preferable in this case.

* Cleanup

* Fix two intra-doc links.

* Simplify slightly.

* Incorporate review feedback.

* Remove git dependency and fix example.

* Update version and changelogs.
2021-03-16 11:48:48 +01:00