1930 Commits

Author SHA1 Message Date
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
dependabot[bot]
9dbc90efe7
Update socket2 requirement from 0.3.19 to 0.4.0 (#1997)
* Update socket2 requirement from 0.3.19 to 0.4.0

Updates the requirements on [socket2](https://github.com/rust-lang/socket2) to permit the latest version.
- [Release notes](https://github.com/rust-lang/socket2/releases)
- [Changelog](https://github.com/rust-lang/socket2/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/socket2/compare/v0.3.19...v0.3.19)

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

* Adapt to API and feature changes.

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Roman S. Borschel <roman@parity.io>
2021-03-15 17:33:49 +01:00
dependabot[bot]
375690d396
Update minicbor requirement from 0.7 to 0.8 (#1998)
Updates the requirements on [minicbor](https://gitlab.com/twittner/minicbor) to permit the latest version.
- [Release notes](https://gitlab.com/twittner/minicbor/tags)
- [Changelog](https://gitlab.com/twittner/minicbor/blob/master/CHANGELOG.md)
- [Commits](https://gitlab.com/twittner/minicbor/compare/minicbor-v0.7.0...minicbor-v0.8.0)

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-03-15 15:17:16 +01:00
Max Inden
d792998497
*: Require smallvec >= 1.6.1 (#1994)
Versions <1.6.1 are vulnerable to a buffer overflow. See
https://rustsec.org/advisories/RUSTSEC-2021-0003.html for details.
2021-03-15 12:31:21 +01:00
dependabot[bot]
f6bc807055
Update env_logger requirement from 0.7.1 to 0.8.3 (#1992)
Updates the requirements on [env_logger](https://github.com/env-logger-rs/env_logger) to permit the latest version.
- [Release notes](https://github.com/env-logger-rs/env_logger/releases)
- [Changelog](https://github.com/env-logger-rs/env_logger/blob/master/CHANGELOG.md)
- [Commits](https://github.com/env-logger-rs/env_logger/commits/v0.8.3)

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-03-12 15:32:35 +01:00
Max Inden
e9e366cbe8
protocols/kad/tests: Ignore Kademlia routing update event (#1993)
In the `libp2p-relay` Kademlia discovery test, ignore Kademlia routing
update events when waiting for a ping from the destination node.
2021-03-11 18:16:33 +01:00
Max Inden
0c412fbc1c
protocols/req-resp: Panic in inbound upgrade when handler dropped (#1990)
An inbound upgrade should not be polled after the corresponding handler
has been dropped. Enforce this assumption by panicing in such case.
2021-03-11 16:54:18 +01:00
Max Inden
2f9c1759e6
protocols/relay: Implement circuit relay specification (#1838)
This commit implements the [libp2p circuit
relay](https://github.com/libp2p/specs/tree/master/relay) specification. It is
based on previous work from https://github.com/libp2p/rust-libp2p/pull/1134.

Instead of altering the `Transport` trait, the approach taken in this commit
is to wrap an existing implementation of `Transport` allowing one to:

- Intercept `dial` requests with a relayed address.

- Inject incoming relayed connections with the local node being the destination.

- Intercept `listen_on` requests pointing to a relay, ensuring to keep a
  constant connection to the relay, waiting for incoming requests with the local
  node being the destination.

More concretely one would wrap an existing `Transport` implementation as seen
below, allowing the `Relay` behaviour and the `RelayTransport` to communicate
via channels.

### Example

```rust
let (relay_transport, relay_behaviour) = new_transport_and_behaviour(
    RelayConfig::default(),
    MemoryTransport::default(),
);

let transport = relay_transport
    .upgrade(upgrade::Version::V1)
    .authenticate(plaintext)
    .multiplex(YamuxConfig::default())
    .boxed();

let mut swarm = Swarm::new(transport, relay_behaviour, local_peer_id);

let relay_addr = Multiaddr::from_str("/memory/1234").unwrap()
    .with(Protocol::P2p(PeerId::random().into()))
    .with(Protocol::P2pCircuit);
let dst_addr = relay_addr.clone().with(Protocol::Memory(5678));

// Listen for incoming connections via relay node (1234).
Swarm::listen_on(&mut swarm, relay_addr).unwrap();

// Dial node (5678) via relay node (1234).
Swarm::dial_addr(&mut swarm, dst_addr).unwrap();
```

Co-authored-by: Pierre Krieger <pierre.krieger1708@gmail.com>
Co-authored-by: Roman Borschel <romanb@users.noreply.github.com>
Co-authored-by: David Craven <david@craven.ch>
2021-03-11 16:07:59 +01:00
Roman Borschel
f48bb15fa7
[kad] Provide a targeted store operation. (#1988)
* Add `Kademlia::put_record_to` for storing a record at specific nodes,
e.g. for write-back caching after a successful read. In that context,
peers that were queried in a successful `Kademlia::get_record` operation but
did not return a record are now returned in the `GetRecordOk::no_record`
list of peer IDs.

Closes https://github.com/libp2p/rust-libp2p/issues/1577.

* Update protocols/kad/src/behaviour.rs

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

* Refine implementation.

Rather than returning the peers that are cache candidates
in a `Vec` in an arbitrary order, use a `BTreeMap`. Furthermore,
make the caching configurable, being enabled by default with
`max_peers` of 1. By configuring it with `max_peers` > 1 it is
now also possible to control at how many nodes the record is cached
automatically after a lookup with quorum 1. When enabled,
successful lookups will always return `cache_candidates`, which
can be used explicitly with `Kademlia::put_record_to` after
lookups with a quorum > 1.

* Re-export KademliaCaching

* Update protocols/kad/CHANGELOG.md

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

* Clarify changelog.

Co-authored-by: Max Inden <mail@max-inden.de>
2021-03-09 18:35:43 +01:00
Max Inden
67c465c726
protocols/request-response: Update CHANGELOG.md 2021-03-09 17:54:23 +01:00
Thomas Eizinger
ed6f972162
protocols/request-response: Close response stream even if response cannot be sent (#1987)
Co-authored-by: Roman Borschel <romanb@users.noreply.github.com>
Co-authored-by: Max Inden <mail@max-inden.de>
2021-03-09 17:50:57 +01:00
Roman Borschel
f304fe762b
[core] Shorten and unify Debug impls of public keys. (#1982)
* Shorten and unify Debug impls of public keys.

ed25519 `PublicKey` and secp256k1 `PublicKey` get a new `Debug`
impl, while RSAs `PublicKey` is aligned with the others for uniformity.

* Update version and changelog.
2021-03-09 10:56:19 +01:00
Roman S. Borschel
dcfbe4f2cf Update version and changelog. 2021-03-03 11:04:16 +01:00
quininer
6eb8b65b85
Don't leak default features (#1986) 2021-03-03 10:57:25 +01:00
dependabot[bot]
9e6415df74
Update if-watch requirement from 0.1.8 to 0.2.0 (#1979)
* Update if-watch requirement from 0.1.8 to 0.2.0

Updates the requirements on [if-watch](https://github.com/dvc94ch/if-watch) to permit the latest version.
- [Release notes](https://github.com/dvc94ch/if-watch/releases)
- [Commits](https://github.com/dvc94ch/if-watch/commits)

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

* Update libp2p-tcp.

* Update libp2p-tcp version and changelog.

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Roman S. Borschel <roman@parity.io>
Co-authored-by: Roman Borschel <romanb@users.noreply.github.com>
2021-03-02 10:55:19 +01:00
David Craven
b727efee13
Don't poll network unnecessarily. (#1977)
* Don't poll network unnecessarily.

* Fix ci.

* Damn tokio.

* Address review comments.

* Update deps.

* Don't drop packet if socket is not writable.

* Increase TTL and rename to `query_interval`.

* Update CHANGELOG.

Co-authored-by: Roman S. Borschel <roman@parity.io>
2021-03-02 10:18:24 +01:00
Roman S. Borschel
6b5fa0324d Prepare multistream-select-0.10.2 2021-03-01 15:56:00 +01:00
Roman Borschel
51dba42490
Re-enable 'parallel negotiation'. (#1934)
Based on an estimate of the number of alternative
protocols the dialer supports.
2021-03-01 15:52:54 +01:00
Pierre Krieger
b81100c2f6
Parsing mDNS packet failure: warn -> debug (#1978)
Co-authored-by: Roman Borschel <romanb@users.noreply.github.com>
2021-02-25 15:41:47 +01:00
Roman Borschel
7dd42fcaaf
[swarm] Remove substream-specific protocol negotiation version. (#1962)
* Remove substream-specific protocol negotiation version.

Remove the option for a substream-specific multistream select protocol override.
The override at this granularity is no longer deemed useful, in particular because
it can usually not be configured for existing protocols like `libp2p-kad` and others.
There is a `Swarm`-scoped configuration for this version available since
[1858](https://github.com/libp2p/rust-libp2p/pull/1858).

* Update protocol crate versions and changelogs.

* Clean up documentation.
2021-02-25 11:35:52 +01:00
Thomas Eizinger
6a7576afec
README.md: Link to "comit" GitHub org instead of single project (#1961)
Numerous projects in our org use rust-libp2p. Link to the whole org instead of one specific repository.
2021-02-22 09:54:12 +01:00
Roman S. Borschel
f241bce7c1 Update release dates. 2021-02-17 11:05:20 +01:00
Roman Borschel
c072cd29d4
Update to yamux-0.8.1 (#1959) 2021-02-17 10:57:07 +01:00
Roman Borschel
cda7c3504e
Prepare v0.35 (#1957) 2021-02-15 20:06:50 +01:00
Max Inden
26f6b96d1e
*: Require at least if-watch v0.1.8 (#1956) 2021-02-15 16:11:30 +01:00
Roman Borschel
6499e924a3
Make clippy "happy". (#1950)
* Make clippy "happy".

Address all clippy complaints that are not purely stylistic (or even
have corner cases with false positives). Ignore all "style" and "pedantic" lints.

* Fix tests.

* Undo unnecessary API change.
2021-02-15 11:59:51 +01:00
Max Inden
12557a3c86
swarm/behaviour: Document inject_connected called for first only (#1954)
`NetworkBehaviour::inject_connected` is called for the first established
connection to a peer only. See `swarm/src/lib.rs`:

```rust
this.behaviour.inject_connection_established(&peer_id, &connection.id(), &endpoint);
if num_established.get() == 1 {
    this.behaviour.inject_connected(&peer_id);
}
```

This commit adjusts the documentation accordingly.
2021-02-15 11:22:28 +01:00
dependabot[bot]
2816023414
Bump styfle/cancel-workflow-action from 0.7.0 to 0.8.0 (#1955)
Bumps [styfle/cancel-workflow-action](https://github.com/styfle/cancel-workflow-action) from 0.7.0 to 0.8.0.
- [Release notes](https://github.com/styfle/cancel-workflow-action/releases)
- [Commits](https://github.com/styfle/cancel-workflow-action/compare/0.7.0...3d86a7cc43670094ac248017207be0295edbc31d)

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-15 11:03:23 +01:00
dependabot[bot]
639e5c678e
Update unsigned-varint and asynchronous-codec (#1946)
* Update unsigned-varint requirement from 0.6 to 0.7

Updates the requirements on [unsigned-varint](https://github.com/paritytech/unsigned-varint) to permit the latest version.
- [Release notes](https://github.com/paritytech/unsigned-varint/releases)
- [Changelog](https://github.com/paritytech/unsigned-varint/blob/master/CHANGELOG.md)
- [Commits](https://github.com/paritytech/unsigned-varint/compare/v0.6.0...v0.7.0)

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

* *: Update to asynchronous-codec v0.6

* transports/plaintext: Use Framed::into_parts

* *: Update cargo tomls and changelogs

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Max Inden <mail@max-inden.de>
2021-02-13 20:15:14 +01:00
Austin Abell
5ddc8d4bf6
README.md: Add Forest to users list (#1953) 2021-02-12 14:43:31 +01:00
Tejas Sanap
40ce05f37e
protocols/request-response: Test is_pending_outbound (#1938)
Signed-off-by: Tejas Sanap <sanap.tejas@gmail.com>
2021-02-10 18:03:44 +01:00
Max Inden
4d290c5a32
README: Remove dead-link badges (#1951) 2021-02-09 11:50:50 +01:00
dependabot[bot]
ba77c49de7
Bump actions/cache from v2 to v2.1.4 (#1949)
Bumps [actions/cache](https://github.com/actions/cache) from v2 to v2.1.4.
- [Release notes](https://github.com/actions/cache/releases)
- [Commits](https://github.com/actions/cache/compare/v2...26968a09c0ea4f3e233fdddbafd1166051a095f6)

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-08 10:05:20 +01:00
Max Inden
c897df3f34
swarm/src/toggle: Ignore listen upgr errors when disabled (#1945)
* swarm/src/toggle: Ignore listen upgr errors when disabled

A disabled `ToggleProtoHandler` can receive listen upgrade errors in the
following two cases:

1. Protocol negotiation on an incoming stream failed with no protocol being
   agreed on.

2. When combining `ProtocolsHandler` implementations a single `ProtocolsHandler`
   might be notified of an inbound upgrade error unrelated to its own upgrade
   logic. For example when nesting a `ToggleProtoHandler` in a
   `ProtocolsHandlerSelect` the former might receive an inbound upgrade error
   even when disabled.

`ToggleProtoHandler` should ignore the error in both of these cases.

* *: Prepare libp2p-swarm v0.27.2 release
2021-02-04 12:42:31 +01:00
Roman Borschel
d94d53abbb
Move some crates. (#1941)
Move transport upgrade protocols from `protocols/`
to `transports/`, such that only "application protocols"
that depend on `libp2p-swarm` remain in `protocols/`,
whereas there is no such dependency in `transports/`
outside of integration tests.

Tweak README and top-level CHANGELOG.
2021-02-01 16:37:19 +01:00
Roman Borschel
2ecf42a2bf
[libp2p-secio] Remove crate. (#1940)
* Remove the SECIO transport protocol.

* Remove stray mentions of secio.
2021-02-01 14:39:44 +01:00
Max Inden
1a01dd16cb
protocols/req-resp: Document uniqueness of RequestIds (#1943) 2021-02-01 14:32:47 +01:00
Roman Borschel
6d0773b68e
[libp2p-deflate] Ensure read buffer is initialised. (#1933)
* Ensure read buffer is initialised.

* Prepare libp2p-deflate-0.27.1.
2021-01-27 13:29:30 +01:00
Roman S. Borschel
b822490ddc Prepare libp2p-swarm-0.27.1 2021-01-27 12:46:14 +01:00
Joonas Koivunen
ab6fecd9f3
Fix DialPeerCondition::Always handling (#1937)
* fix: always dial with condition Always

* chore: changelog note

* refactor: exhaustive DialPeerCondition matching

Co-authored-by: Roman Borschel <romanb@users.noreply.github.com>
2021-01-27 11:05:35 +01:00
Oliver Wangler
8aeb7b3db0
Allow OneShotHandler's max_dial_negotiate limit to be configurable. (#1936)
* Allow OneShotHandler's `max_dial_negotiate` limit to be configurable.

* Update version and CHANGELOG.,

Co-authored-by: Roman S. Borschel <roman@parity.io>
Co-authored-by: Roman Borschel <romanb@users.noreply.github.com>
2021-01-27 10:44:08 +01:00
Roman Borschel
ac9798297b
Rename and move libp2p-core-derive as libp2p-swarm-derive. (#1935) 2021-01-26 22:49:08 +01:00
Max Inden
6400719ae9
protocols/request-response: Add forgotten changelog entry 2021-01-21 15:40:26 +01:00
Max Inden
25ea8b67ff
*: Update changelogs and cargo tomls for req-resp patch 2021-01-21 14:36:58 +01:00
Tejas Sanap
5d22e30cc9
protocols/req-resp: Make is_pending_outbound return true on pending connection (#1928)
`is_pending_outbound` should return true if the connection
to the mentioned peer hasn't been established, yet.

Closes issue: #1885

Signed-off-by: Tejas Sanap <sanap.tejas@gmail.com>
2021-01-21 14:34:58 +01:00
Max Inden
bbd3df64ed
*: Update changelogs and cargo tomls for gossipsub change 2021-01-20 10:50:23 +01:00