Commit Graph

2822 Commits

Author SHA1 Message Date
15ad4ea1d1 feat(gossipsub): deprecate Config::idle_timeout
Deprecate the `Config::idle_timeout` function in preparation for removing the `KeepAlive::Until` entirely.

Related: #3844.

Pull-Request: #4648.
2023-10-15 12:05:08 +00:00
4686ce8e66 feat(rendezous): refresh registration on change to external addresses
Resolves #4627.

Pull-Request: #4629.
2023-10-15 08:40:13 +00:00
d72c67d94e fix(kad): actually report unsupported protocol
It turns out, we never actually used `ProtocolStatus::NotSupported`. Or at least, we never constructed it within the `Handler`. This didn't get flagged by rustc because

a) we allowed the `dead_code` lint across `libp2p-kad`
b) the `HandlerEvent` enum is public and thus could be constructed by users

Related: #4632.
Related: #4633.

Pull-Request: #4639.
2023-10-14 22:43:40 +00:00
0446068b4b ci: ensure Cargo.toml and CHANGELOG of published crates are updated
Resolves: #4367.

Pull-Request: #4620.
2023-10-14 09:45:03 +00:00
74c087dcef fix(libp2p): add shortcut with_tcp(...).with_bandwidth_logging()
Add the shortcut method `.with_bandwidth_logging` to `SwarmBuilder<_, QuicPhase<_>>`, thus allowing `with_tcp(...).with_bandwidth_logging()`.

Pull-Request: #4626.
2023-10-13 12:17:10 +00:00
56cb08a9b0 fix(quic): delete flaky dial_failure test
This test is sometimes flaky. Instead of fixing it, I am proposing to delete it because it doesn't test anything meaningful. Dialing a non-existent transport should fail? Yes probably. Should we test that dropping a value destroys the relevant tasks? I don't think so. That is covered by Rust's ownership rules.

Pull-Request: #4640.
2023-10-13 08:10:33 +00:00
50a7ffe119 refactor(kad): delete unused code
We have a fair bit of unused code in `libp2p-kad` that was ignored because we had `#[allow(dead_code)]` at the top of the crate.

Pull-Request: #4633.
2023-10-13 08:00:02 +00:00
d6351eead7 deps: bump if-watch from 3.0.1 to 3.1.0
Pull-Request: #4635.
2023-10-13 06:10:06 +00:00
6aa805d581 refactor: make debug-print of StreamProtocol more concise
The` fmt::Debug` implementation of a type should in most cases reveal its internal structure. `StreamProtocol` is likely to be debug-printed a lot and in many cases, the only contract is the `fmt::Debug` impl. The internals of `StreamProtocol` only exist for performance reasons to avoid allocations for statically-known protocol strings. Revealing this implementation detail isn't particularly beneficial to end users. At the same time, the current implementation is very noise.

Previously, the `protocols` field of an `identify::Info` would e.g. read as:

```
protocols: [StreamProtocol { inner: Right("/ipfs/id/1.0.0") }, StreamProtocol { inner: Right("/ipfs/id/push/1.0.0") }, StreamProtocol { inner: Right("/ipfs/kad/1.0.0") }]
```

With this patch, it reads as:

```
protocols: ["/ipfs/id/1.0.0", "/ipfs/kad/1.0.0", "/ipfs/id/push/1.0.0"]
```

Pull-Request: #4631.
2023-10-13 05:23:11 +00:00
7947a9fded deps: bump serde from 1.0.188 to 1.0.189
Pull-Request: #4637.
2023-10-13 04:47:56 +00:00
0626e2e329 docs: fix misc. errors around changelogs and manifests
Detected by #4620.

Pull-Request: #4630.
2023-10-13 04:29:38 +00:00
7120529c6d fix(kad): rewrite tests to be less flaky
Not sure why but these tests have recently been quite flaky and are blocking several PRs.

Pull-Request: #4634.
2023-10-13 04:18:19 +00:00
497f393987 fix(quic): don't report error for gracefully closed connections
Closes quinn's `Endpoint` with `Ok(())`  when `Accept` returns `None`.

Resolves: #4588.
Related: https://github.com/quinn-rs/quinn/issues/1676.

Pull-Request: #4621.
2023-10-12 09:05:07 +00:00
5c498f656c ci: use new "transport-interop" action
Resolves: #4592.

Pull-Request: #4594.
2023-10-11 20:01:34 +00:00
3a0f0c292a fix(server): remove support_draft_29
Support for QUIC draft 29 was removed with https://github.com/libp2p/rust-libp2p/pull/4467.

https://github.com/libp2p/rust-libp2p/pull/4120 reintroduced it as a faulty merge.

This commit removes it again.

Pull-Request: #4622.
2023-10-10 13:05:54 +00:00
d605255fec feat(libp2p): add SwarmBuilder
Introduce the new `libp2p::SwarmBuilder`. Users should use the new `libp2p::SwarmBuilder` instead of the now deprecated `libp2p::swarm::SwarmBuilder`. See `libp2p::SwarmBuilder` docs on how to use the new builder.

Fixes #3657.
Fixes #3563.
Fixes #3179.

Pull-Request: #4120.
2023-10-10 06:55:14 +00:00
3ae72557ab deps: bump tokio from 1.32.0 to 1.33.0
Pull-Request: #4615.
2023-10-10 05:17:02 +00:00
6cc40fe533 deps: bump byteorder from 1.4.3 to 1.5.0
Pull-Request: #4614.
2023-10-10 05:04:05 +00:00
d3f34454d4 fix: don't push rust-libp2p-server image for dependabot PRs
Pull-Request: #4619.
2023-10-10 04:47:51 +00:00
19c5cf22ec feat(websocket): add WebSocket for WASM environments
Resolves https://github.com/libp2p/rust-libp2p/issues/3611.

Pull-Request: #4102.
2023-10-10 01:41:29 +00:00
5efcb8ff6d deps: bump regex from 1.9.6 to 1.10.0
Pull-Request: #4617.
2023-10-10 01:13:45 +00:00
e6be50154d deps: bump proc-macro-warning from 0.4.2 to 1.0.0
Pull-Request: #4608.
2023-10-10 00:56:57 +00:00
14ccaed094 deps: bump libc from 0.2.148 to 0.2.149
Pull-Request: #4609.
2023-10-09 13:43:06 +00:00
2f22dd2be1 deps: bump proc-macro2 from 1.0.67 to 1.0.69
Pull-Request: #4613.
2023-10-09 13:23:47 +00:00
8114894f67 docs: add pk records insertion example
In the original issue I mention that a lot of external dependencies would be needed to insert records into the IPFS DHT. While this is still true for IPNS-type records, I found that PK-type records can be created with no need for external code. Thus, I decided to try and enhance the already existing example and add the option to insert a PK record there.

Resolves #2263.

Pull-Request: #4567.
2023-10-09 13:08:22 +00:00
1bfaf1c67d deps: bump lru from 0.11.1 to 0.12.0
Pull-Request: #4610.
2023-10-09 12:04:49 +00:00
94894e4c9f deps: bump num-traits from 0.2.16 to 0.2.17
Pull-Request: #4612.
2023-10-09 11:06:22 +00:00
630b7132dc deps: bump reqwest from 0.11.21 to 0.11.22
Pull-Request: #4611.
2023-10-09 10:53:25 +00:00
ba4d56f436 deps: bump syn from 2.0.37 to 2.0.38
Pull-Request: #4607.
2023-10-09 09:14:52 +00:00
1a460fa66f feat: change md issue templates into yml forms
Resolves: #4151.

Pull-Request: #4560.
2023-10-09 08:49:18 +00:00
3458950bea chore(upnp, webrtc): add missing docs.rs metadata
Includes necessary package metadata to improve documentation on docs.rs (shows which items are behind a cfg).
Read more on: #2983

Pull-Request: #4599.
2023-10-09 02:46:32 +00:00
0e9d339bd2 ci: use workspace inheritance to enforce lints in all crates
Starting with nightly-2023-09-10, the `[lints]` section in `Cargo.toml` files is stable. Together with workspace inheritance, this can be used to declare all lints we want to enforce in a single place.

Resolves: #4484.

Pull-Request: #4575.
2023-10-09 02:20:46 +00:00
35b8308817 fix(interop): only write to cache if we have credentials
For pull-requests coming from forks, we don't have access to the secrets. This is currently failing CI for all PRs from forks as docker cannot write the cache after running the tests.

Pull-Request: #4604.
2023-10-09 01:50:19 +00:00
77149f08c4 fix(identity): correctly follow extract-expand for HKDF
As @mxinden pointed out in https://github.com/libp2p/rust-libp2p/pull/4554#discussion_r1344747938, we were not correctly following the HKDF steps of extract and expand.

Pull-Request: #4589.
2023-10-09 01:31:10 +00:00
ef9c544d4d deps: upgrade cargo semver-checks to v0.24
I've also changed our use of the action to pin by Git hash as per our policy for external actions.

See https://github.com/obi1kenobi/cargo-semver-checks/releases/tag/v0.24.0 for details on the release.

Pull-Request: #4603.
2023-10-09 01:14:44 +00:00
b6a1398060 fix: remove redundant intra-doc link
The recent Rust release introduced a new rustdoc lint which is currently failing CI.

Pull-Request: #4602.
2023-10-09 00:58:32 +00:00
7d1d67cad3 ci: create dependency cache layer of interop tests
Currently, the Docker images for the HEAD branch of the pull-request get re-built completely every time we push a new commit to a branch. That is because the RUN caches use the local disk of the host system but those are ephemeral in GitHub actions.

To fix this, we rewrite the dockerfiles to use `cargo chef`, a tool developed to create a cached layer of built dependencies that doesn't get invalidated as the application source changes.

Normally, these layers are also cached on the local filesystem. To have them available across pull-requests and branches, we instruct buildkit to use the same S3 cache as we use in the interop tests already for docker layers. As a result, this should greatly speed up our CI.

Resolves: #3925.

Pull-Request: #4593.
2023-10-05 04:14:45 +00:00
246acfd425 refactor(examples): change ipfs-kad from async-std to tokio
Related: #4449.

Pull-Request: #4590.
2023-10-05 03:27:02 +00:00
0e94bc24c7 refactor(examples): change ipfs-private from async-std to tokio
Related: #4449.

Pull-Request: #4591.
2023-10-04 23:18:25 +00:00
d862b40383 refactor(examples): remove #[behaviour(to_swarm = "Event")]
Removes the usage of the `to_swarm` `libp2p-swarm-derive` attribute in favor of the automatically generated event through the `NetworkBehaviour` derive macro.

Pull-Request: #4580.
2023-10-03 22:21:17 +00:00
399eaa3915 refactor(examples): change ping from async-std to tokio
Related: #4449.

Pull-Request: #4570.
2023-10-03 06:35:13 +00:00
980bda088d deps: bump regex from 1.9.5 to 1.9.6
Pull-Request: #4577.
2023-10-03 02:03:02 +00:00
3ff354f1ef deps: bump thiserror from 1.0.48 to 1.0.49
Pull-Request: #4578.
2023-10-03 01:50:38 +00:00
5c7a18bc1f deps: bump reqwest from 0.11.20 to 0.11.21
Pull-Request: #4584.
2023-10-03 00:24:14 +00:00
60650d8b90 chore(identity): release version 0.2.4
`libp2p-identity` gets a special treatment in our workspace because it is the only crate that is a dependency of crates _outside_ the workspace, in particular `multiaddr`. We however also depend on `multiaddr` again in the workspace. As a result, we need to use `[patch.crates-io]` to replace the `libp2p-identity` version across the entire dependency tree. This however doesn't work well with `cargo semver-checks` as it doesn't copy over `[patch]` sections into its workspace where it does the docs building.

To fix the semver checks error, we need to release a new version of `libp2p-identity`.

Pull-Request: #4583.
2023-10-03 00:04:57 +00:00
ef1cd354d8 fix(identity): address clippy lint
Pull-Request: #4582.
2023-10-02 22:59:39 +00:00
90a9752dc7 deps: bump sha2 from 0.10.7 to 0.10.8
Pull-Request: #4579.
2023-10-02 09:03:11 +00:00
7f92cb0725 feat(quic): support stateless resets
Resolves #3419.

Pull-Request: #4554.
2023-10-02 00:28:32 +00:00
c86d1117be refactor(examples): change autonat example from async-std to tokio
Changed the `autonat` example to use `tokio` instead of `async-std` as runtime.

Related: #4449.

Pull-Request: #4574.
2023-10-01 21:38:40 +00:00
ecdd0ff767 refactor(identify): use ReadyUpgrade for {In,Out}boundUpgrade
Related: #2863.

Pull-Request: #4563.
2023-09-28 23:23:54 +00:00