From b9323c1ea2b60c4f294ff457d8368931d0d71dc6 Mon Sep 17 00:00:00 2001 From: Pierre Krieger Date: Thu, 15 Apr 2021 13:28:25 +0200 Subject: [PATCH 1/3] Update to libp2p 0.37 --- Cargo.lock | 115 ++++++++---------- bin/node/browser-testing/Cargo.toml | 4 +- bin/node/cli/Cargo.toml | 2 +- client/authority-discovery/Cargo.toml | 2 +- client/cli/Cargo.toml | 2 +- client/network-gossip/Cargo.toml | 2 +- client/network/Cargo.toml | 6 +- client/network/src/discovery.rs | 26 +++- client/network/src/peer_info.rs | 30 +++-- client/network/src/protocol.rs | 16 ++- .../src/protocol/notifications/tests.rs | 18 ++- client/network/src/request_responses.rs | 24 +++- client/network/src/service.rs | 104 ++++++++-------- client/network/src/utils.rs | 5 + client/network/test/Cargo.toml | 2 +- client/peerset/Cargo.toml | 2 +- client/telemetry/Cargo.toml | 2 +- primitives/consensus/common/Cargo.toml | 2 +- utils/browser/Cargo.toml | 4 +- 19 files changed, 208 insertions(+), 160 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 14fd4778c639a..74e76da0a9af0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -164,22 +164,9 @@ checksum = "5a2f58b0bb10c380af2b26e57212856b8c9a59e0925b4c20f4a174a49734eaf7" [[package]] name = "asn1_der" -version = "0.6.3" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fce6b6a0ffdafebd82c87e79e3f40e8d2c523e5fea5566ff6b90509bf98d638" -dependencies = [ - "asn1_der_derive", -] - -[[package]] -name = "asn1_der_derive" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d0864d84b8e07b145449be9a8537db86bf9de5ce03b913214694643b4743502" -dependencies = [ - "quote", - "syn", -] +checksum = "9d6e24d2cce90c53b948c46271bfb053e4bdc2db9b5d3f65e20f8cf28a1b7fc3" [[package]] name = "assert_cmd" @@ -2778,9 +2765,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.47" +version = "0.3.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cfb73131c35423a367daf8cbd24100af0d077668c8c2943f0e7dd775fef0f65" +checksum = "2d99f9e3e84b8f67f846ef5b4cbbc3b1c29f6c759fcbce6f01aa0e73d932a24c" dependencies = [ "wasm-bindgen", ] @@ -3105,9 +3092,9 @@ checksum = "c7d73b3f436185384286bd8098d17ec07c9a7d2388a6599f824d8502b529702a" [[package]] name = "libp2p" -version = "0.36.0" +version = "0.37.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe5759b526f75102829c15e4d8566603b4bf502ed19b5f35920d98113873470d" +checksum = "08053fbef67cd777049ef7a95ebaca2ece370b4ed7712c3fa404d69a88cb741b" dependencies = [ "atomic", "bytes 1.0.1", @@ -3144,9 +3131,9 @@ dependencies = [ [[package]] name = "libp2p-core" -version = "0.28.1" +version = "0.28.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1e1797734bbd4c453664fefb029628f77c356ffc5bce98f06b18a7db3ebb0f7" +checksum = "71dd51b562e14846e65bad00e5808d0644376e6588668c490d3c48e1dfeb4a9a" dependencies = [ "asn1_der", "bs58", @@ -3189,9 +3176,9 @@ dependencies = [ [[package]] name = "libp2p-dns" -version = "0.28.0" +version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9712eb3e9f7dcc77cc5ca7d943b6a85ce4b1faaf91a67e003442412a26d6d6f8" +checksum = "62e63dab8b5ff35e0c101a3e51e843ba782c07bbb1682f5fd827622e0d02b98b" dependencies = [ "async-std-resolver", "futures 0.3.13", @@ -3203,9 +3190,9 @@ dependencies = [ [[package]] name = "libp2p-floodsub" -version = "0.28.0" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "897645f99e9b396df256a6aa8ba8c4bc019ac6b7c62556f624b5feea9acc82bb" +checksum = "48a9b570f6766301d9c4aa00fce3554cad1598e2f466debbc4dde909028417cf" dependencies = [ "cuckoofilter", "fnv", @@ -3221,9 +3208,9 @@ dependencies = [ [[package]] name = "libp2p-gossipsub" -version = "0.29.0" +version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "794b0c85f5df1acbc1fc38414d37272594811193b6325c76d3931c3e3f5df8c0" +checksum = "73cb9a89a301afde1e588c73f7e9131e12a5388725f290a9047b878862db1b53" dependencies = [ "asynchronous-codec 0.6.0", "base64 0.13.0", @@ -3247,9 +3234,9 @@ dependencies = [ [[package]] name = "libp2p-identify" -version = "0.28.0" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f88ebc841d744979176ab4b8b294a3e655a7ba4ef26a905d073a52b49ed4dff5" +checksum = "5f668f00efd9883e8b7bcc582eaf0164615792608f886f6577da18bcbeea0a46" dependencies = [ "futures 0.3.13", "libp2p-core", @@ -3263,9 +3250,9 @@ dependencies = [ [[package]] name = "libp2p-kad" -version = "0.29.0" +version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbb5b90b6bda749023a85f60b49ea74b387c25f17d8df541ae72a3c75dd52e63" +checksum = "b07312ebe5ee4fd2404447a0609814574df55c65d4e20838b957bbd34907d820" dependencies = [ "arrayvec 0.5.2", "asynchronous-codec 0.6.0", @@ -3289,9 +3276,9 @@ dependencies = [ [[package]] name = "libp2p-mdns" -version = "0.29.0" +version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be28ca13bb648d249a9baebd750ebc64ce7040ddd5f0ce1035ff1f4549fb596d" +checksum = "c221897b3fd7f215de7ecfec215c5eba598e5b61c605b5f8b56fe8a4fb507724" dependencies = [ "async-io", "data-encoding", @@ -3350,9 +3337,9 @@ dependencies = [ [[package]] name = "libp2p-ping" -version = "0.28.0" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dea10fc5209260915ea65b78f612d7ff78a29ab288e7aa3250796866af861c45" +checksum = "bf4bfaffac63bf3c7ec11ed9d8879d455966ddea7e78ee14737f0b6dce0d1cd1" dependencies = [ "futures 0.3.13", "libp2p-core", @@ -3396,9 +3383,9 @@ dependencies = [ [[package]] name = "libp2p-relay" -version = "0.1.0" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ff268be6a9d6f3c6cca3b81bbab597b15217f9ad8787c6c40fc548c1af7cd24" +checksum = "0b8786aca3f18671d8776289706a5521f6c9124a820f69e358de214b9939440d" dependencies = [ "asynchronous-codec 0.6.0", "bytes 1.0.1", @@ -3419,9 +3406,9 @@ dependencies = [ [[package]] name = "libp2p-request-response" -version = "0.10.0" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "725367dd2318c54c5ab1a6418592e5b01c63b0dedfbbfb8389220b2bcf691899" +checksum = "1cdbe172f08e6d0f95fa8634e273d4c4268c4063de2e33e7435194b0130c62e3" dependencies = [ "async-trait", "bytes 1.0.1", @@ -3439,9 +3426,9 @@ dependencies = [ [[package]] name = "libp2p-swarm" -version = "0.28.0" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75c26980cadd7c25d89071cb23e1f7f5df4863128cc91d83c6ddc72338cecafa" +checksum = "1e04d8e1eef675029ec728ba14e8d0da7975d84b6679b699b4ae91a1de9c3a92" dependencies = [ "either", "futures 0.3.13", @@ -3455,9 +3442,9 @@ dependencies = [ [[package]] name = "libp2p-swarm-derive" -version = "0.22.0" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c564ebaa36a64839f51eaddb0243aaaa29ce64affb56129193cc3248b72af273" +checksum = "365b0a699fea5168676840567582a012ea297b1ca02eee467e58301b9c9c5eed" dependencies = [ "quote", "syn", @@ -3494,9 +3481,9 @@ dependencies = [ [[package]] name = "libp2p-wasm-ext" -version = "0.28.0" +version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6df65fc13f6188edf7e6927b086330448b3ca27af86b49748c6d299d7c8d9040" +checksum = "cef45d61e43c313531b5e903e4e8415212ff6338e0c54c47da5b9b412b5760de" dependencies = [ "futures 0.3.13", "js-sys", @@ -3526,9 +3513,9 @@ dependencies = [ [[package]] name = "libp2p-yamux" -version = "0.31.0" +version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96d6144cc94143fb0a8dd1e7c2fbcc32a2808168bcd1d69920635424d5993b7b" +checksum = "f35da42cfc6d5cb0dcf3ad6881bc68d146cdf38f98655e09e33fbba4d13eabc4" dependencies = [ "futures 0.3.13", "libp2p-core", @@ -6210,9 +6197,9 @@ checksum = "bc881b2c22681370c6a780e47af9840ef841837bc98118431d4e1868bd0c1086" [[package]] name = "proc-macro2" -version = "1.0.24" +version = "1.0.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e0704ee1a7e00d7bb417d0770ea303c1bccbabf0ef1667dae92b5967f5f8a71" +checksum = "a152013215dca273577e18d2bf00fa862b89b24169fb78c4c95aeb07992c9cec" dependencies = [ "unicode-xid", ] @@ -9642,9 +9629,9 @@ checksum = "1e81da0851ada1f3e9d4312c704aa4f8806f0f9d69faaf8df2f3464b4a9437c2" [[package]] name = "syn" -version = "1.0.62" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "123a78a3596b24fee53a6464ce52d8ecbf62241e6294c7e7fe12086cd161f512" +checksum = "48fe99c6bd8b1cc636890bcc071842de909d902c81ac7dab53ba33c421ab8ffb" dependencies = [ "proc-macro2", "quote", @@ -10652,9 +10639,9 @@ checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" [[package]] name = "wasm-bindgen" -version = "0.2.71" +version = "0.2.73" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ee1280240b7c461d6a0071313e08f34a60b0365f14260362e5a2b17d1d31aa7" +checksum = "83240549659d187488f91f33c0f8547cbfef0b2088bc470c116d1d260ef623d9" dependencies = [ "cfg-if 1.0.0", "serde", @@ -10664,9 +10651,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.71" +version = "0.2.73" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b7d8b6942b8bb3a9b0e73fc79b98095a27de6fa247615e59d096754a3bc2aa8" +checksum = "ae70622411ca953215ca6d06d3ebeb1e915f0f6613e3b495122878d7ebec7dae" dependencies = [ "bumpalo", "lazy_static", @@ -10691,9 +10678,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.71" +version = "0.2.73" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5ac38da8ef716661f0f36c0d8320b89028efe10c7c0afde65baffb496ce0d3b" +checksum = "3e734d91443f177bfdb41969de821e15c516931c3c3db3d318fa1b68975d0f6f" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -10701,9 +10688,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.71" +version = "0.2.73" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc053ec74d454df287b9374ee8abb36ffd5acb95ba87da3ba5b7d3fe20eb401e" +checksum = "d53739ff08c8a68b0fdbcd54c372b8ab800b1449ab3c9d706503bc7dd1621b2c" dependencies = [ "proc-macro2", "quote", @@ -10714,9 +10701,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.71" +version = "0.2.73" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d6f8ec44822dd71f5f221a5847fb34acd9060535c1211b70a05844c0f6383b1" +checksum = "d9a543ae66aa233d14bb765ed9af4a33e81b8b58d1584cf1b47ff8cd0b9e4489" [[package]] name = "wasm-bindgen-test" @@ -11161,15 +11148,15 @@ dependencies = [ [[package]] name = "yamux" -version = "0.8.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cc7bd8c983209ed5d527f44b01c41b7dc146fd960c61cf9e1d25399841dc271" +checksum = "e7d9028f208dd5e63c614be69f115c1b53cacc1111437d4c765185856666c107" dependencies = [ "futures 0.3.13", "log", "nohash-hasher", "parking_lot 0.11.1", - "rand 0.7.3", + "rand 0.8.3", "static_assertions", ] diff --git a/bin/node/browser-testing/Cargo.toml b/bin/node/browser-testing/Cargo.toml index 292ee2cab6bf7..93bf8f5131e3f 100644 --- a/bin/node/browser-testing/Cargo.toml +++ b/bin/node/browser-testing/Cargo.toml @@ -8,11 +8,11 @@ license = "Apache-2.0" [dependencies] futures-timer = "3.0.2" -libp2p = { version = "0.36.0", default-features = false } +libp2p = { version = "0.37.1", default-features = false } jsonrpc-core = "15.0.0" serde = "1.0.106" serde_json = "1.0.48" -wasm-bindgen = { version = "=0.2.71", features = ["serde-serialize"] } +wasm-bindgen = { version = "=0.2.73", features = ["serde-serialize"] } wasm-bindgen-futures = "0.4.18" wasm-bindgen-test = "0.3.18" futures = "0.3.9" diff --git a/bin/node/cli/Cargo.toml b/bin/node/cli/Cargo.toml index 9449edfbf6e08..f552d3fff36cc 100644 --- a/bin/node/cli/Cargo.toml +++ b/bin/node/cli/Cargo.toml @@ -102,7 +102,7 @@ node-inspect = { version = "0.8.0", optional = true, path = "../inspect" } try-runtime-cli = { version = "0.9.0", optional = true, path = "../../../utils/frame/try-runtime/cli" } # WASM-specific dependencies -wasm-bindgen = { version = "0.2.57", optional = true } +wasm-bindgen = { version = "0.2.73", optional = true } wasm-bindgen-futures = { version = "0.4.18", optional = true } browser-utils = { package = "substrate-browser-utils", path = "../../../utils/browser", optional = true, version = "0.9.0"} libp2p-wasm-ext = { version = "0.28", features = ["websocket"], optional = true } diff --git a/client/authority-discovery/Cargo.toml b/client/authority-discovery/Cargo.toml index 4a92186c444b7..e3727e093d007 100644 --- a/client/authority-discovery/Cargo.toml +++ b/client/authority-discovery/Cargo.toml @@ -23,7 +23,7 @@ derive_more = "0.99.2" either = "1.5.3" futures = "0.3.9" futures-timer = "3.0.1" -libp2p = { version = "0.36.0", default-features = false, features = ["kad"] } +libp2p = { version = "0.37.1", default-features = false, features = ["kad"] } log = "0.4.8" prometheus-endpoint = { package = "substrate-prometheus-endpoint", path = "../../utils/prometheus", version = "0.9.0"} prost = "0.7" diff --git a/client/cli/Cargo.toml b/client/cli/Cargo.toml index 55748ffb3d903..00a56e5fa9b86 100644 --- a/client/cli/Cargo.toml +++ b/client/cli/Cargo.toml @@ -18,7 +18,7 @@ regex = "1.4.2" tokio = { version = "0.2.21", features = [ "signal", "rt-core", "rt-threaded", "blocking" ] } futures = "0.3.9" fdlimit = "0.2.1" -libp2p = "0.36.0" +libp2p = "0.37.1" parity-scale-codec = "2.0.0" hex = "0.4.2" rand = "0.7.3" diff --git a/client/network-gossip/Cargo.toml b/client/network-gossip/Cargo.toml index a72e65ab3f572..fc5fb9a29ce96 100644 --- a/client/network-gossip/Cargo.toml +++ b/client/network-gossip/Cargo.toml @@ -17,7 +17,7 @@ targets = ["x86_64-unknown-linux-gnu"] [dependencies] futures = "0.3.9" futures-timer = "3.0.1" -libp2p = { version = "0.36.0", default-features = false } +libp2p = { version = "0.37.1", default-features = false } log = "0.4.8" lru = "0.6.5" prometheus-endpoint = { package = "substrate-prometheus-endpoint", version = "0.9.0", path = "../../utils/prometheus" } diff --git a/client/network/Cargo.toml b/client/network/Cargo.toml index 604165d10074d..3740ebceb6389 100644 --- a/client/network/Cargo.toml +++ b/client/network/Cargo.toml @@ -63,17 +63,17 @@ wasm-timer = "0.2" zeroize = "1.2.0" [dependencies.libp2p] -version = "0.36.0" +version = "0.37.1" [target.'cfg(target_os = "unknown")'.dependencies.libp2p] -version = "0.36.0" +version = "0.37.1" default-features = false features = ["identify", "kad", "mdns", "mplex", "noise", "ping", "request-response", "tcp-async-io", "websocket", "yamux"] [dev-dependencies] assert_matches = "1.3" -libp2p = { version = "0.36.0", default-features = false } +libp2p = { version = "0.37.1", default-features = false } quickcheck = "1.0.3" rand = "0.7.2" sp-keyring = { version = "3.0.0", path = "../../primitives/keyring" } diff --git a/client/network/src/discovery.rs b/client/network/src/discovery.rs index b7c791e392676..fd11005cfbe79 100644 --- a/client/network/src/discovery.rs +++ b/client/network/src/discovery.rs @@ -573,9 +573,19 @@ impl NetworkBehaviour for DiscoveryBehaviour { } } - fn inject_expired_listen_addr(&mut self, addr: &Multiaddr) { + fn inject_expired_external_addr(&mut self, addr: &Multiaddr) { + let with_peer_id = addr.clone() + .with(Protocol::P2p(self.local_peer_id.clone().into())); + self.known_external_addresses.remove(&with_peer_id); + + for k in self.kademlias.values_mut() { + NetworkBehaviour::inject_expired_external_addr(k, addr) + } + } + + fn inject_expired_listen_addr(&mut self, id: ListenerId, addr: &Multiaddr) { for k in self.kademlias.values_mut() { - NetworkBehaviour::inject_expired_listen_addr(k, addr) + NetworkBehaviour::inject_expired_listen_addr(k, id, addr) } } @@ -585,9 +595,15 @@ impl NetworkBehaviour for DiscoveryBehaviour { } } - fn inject_new_listen_addr(&mut self, addr: &Multiaddr) { + fn inject_new_listener(&mut self, id: ListenerId) { + for k in self.kademlias.values_mut() { + NetworkBehaviour::inject_new_listener(k, id) + } + } + + fn inject_new_listen_addr(&mut self, id: ListenerId, addr: &Multiaddr) { for k in self.kademlias.values_mut() { - NetworkBehaviour::inject_new_listen_addr(k, addr) + NetworkBehaviour::inject_new_listen_addr(k, id, addr) } } @@ -892,7 +908,7 @@ mod tests { first_swarm_peer_id_and_addr = Some((keypair.public().into_peer_id(), listen_addr.clone())) } - Swarm::listen_on(&mut swarm, listen_addr.clone()).unwrap(); + swarm.listen_on(listen_addr.clone()).unwrap(); (swarm, listen_addr) }).collect::>(); diff --git a/client/network/src/peer_info.rs b/client/network/src/peer_info.rs index 28b913ea40192..e7ff848b067c1 100644 --- a/client/network/src/peer_info.rs +++ b/client/network/src/peer_info.rs @@ -23,7 +23,7 @@ use libp2p::core::connection::{ConnectionId, ListenerId}; use libp2p::core::{ConnectedPoint, either::EitherOutput, PeerId, PublicKey}; use libp2p::swarm::{IntoProtocolsHandler, IntoProtocolsHandlerSelect, ProtocolsHandler}; use libp2p::swarm::{NetworkBehaviour, NetworkBehaviourAction, PollParameters}; -use libp2p::identify::{Identify, IdentifyEvent, IdentifyInfo}; +use libp2p::identify::{Identify, IdentifyConfig, IdentifyEvent, IdentifyInfo}; use libp2p::ping::{Ping, PingConfig, PingEvent, PingSuccess}; use log::{debug, trace, error}; use smallvec::SmallVec; @@ -86,8 +86,9 @@ impl PeerInfoBehaviour { local_public_key: PublicKey, ) -> Self { let identify = { - let proto_version = "/substrate/1.0".to_string(); - Identify::new(proto_version, user_agent, local_public_key) + let cfg = IdentifyConfig::new("/substrate/1.0".to_string(), local_public_key) + .with_agent_version(user_agent); + Identify::new(cfg) }; PeerInfoBehaviour { @@ -253,14 +254,19 @@ impl NetworkBehaviour for PeerInfoBehaviour { self.identify.inject_dial_failure(peer_id); } - fn inject_new_listen_addr(&mut self, addr: &Multiaddr) { - self.ping.inject_new_listen_addr(addr); - self.identify.inject_new_listen_addr(addr); + fn inject_new_listener(&mut self, id: ListenerId) { + self.ping.inject_new_listener(id); + self.identify.inject_new_listener(id); } - fn inject_expired_listen_addr(&mut self, addr: &Multiaddr) { - self.ping.inject_expired_listen_addr(addr); - self.identify.inject_expired_listen_addr(addr); + fn inject_new_listen_addr(&mut self, id: ListenerId, addr: &Multiaddr) { + self.ping.inject_new_listen_addr(id, addr); + self.identify.inject_new_listen_addr(id, addr); + } + + fn inject_expired_listen_addr(&mut self, id: ListenerId, addr: &Multiaddr) { + self.ping.inject_expired_listen_addr(id, addr); + self.identify.inject_expired_listen_addr(id, addr); } fn inject_new_external_addr(&mut self, addr: &Multiaddr) { @@ -268,6 +274,11 @@ impl NetworkBehaviour for PeerInfoBehaviour { self.identify.inject_new_external_addr(addr); } + fn inject_expired_external_addr(&mut self, addr: &Multiaddr) { + self.ping.inject_expired_external_addr(addr); + self.identify.inject_expired_external_addr(addr); + } + fn inject_listener_error(&mut self, id: ListenerId, err: &(dyn error::Error + 'static)) { self.ping.inject_listener_error(id, err); self.identify.inject_listener_error(id, err); @@ -323,6 +334,7 @@ impl NetworkBehaviour for PeerInfoBehaviour { } IdentifyEvent::Error { peer_id, error } => debug!(target: "sub-libp2p", "Identification with peer {:?} failed => {}", peer_id, error), + IdentifyEvent::Pushed { .. } => {} IdentifyEvent::Sent { .. } => {} } }, diff --git a/client/network/src/protocol.rs b/client/network/src/protocol.rs index 1ae1d48cba3c5..94980947e2a85 100644 --- a/client/network/src/protocol.rs +++ b/client/network/src/protocol.rs @@ -1523,18 +1523,26 @@ impl NetworkBehaviour for Protocol { self.behaviour.inject_dial_failure(peer_id) } - fn inject_new_listen_addr(&mut self, addr: &Multiaddr) { - self.behaviour.inject_new_listen_addr(addr) + fn inject_new_listener(&mut self, id: ListenerId) { + self.behaviour.inject_new_listener(id) } - fn inject_expired_listen_addr(&mut self, addr: &Multiaddr) { - self.behaviour.inject_expired_listen_addr(addr) + fn inject_new_listen_addr(&mut self, id: ListenerId, addr: &Multiaddr) { + self.behaviour.inject_new_listen_addr(id, addr) + } + + fn inject_expired_listen_addr(&mut self, id: ListenerId, addr: &Multiaddr) { + self.behaviour.inject_expired_listen_addr(id, addr) } fn inject_new_external_addr(&mut self, addr: &Multiaddr) { self.behaviour.inject_new_external_addr(addr) } + fn inject_expired_external_addr(&mut self, addr: &Multiaddr) { + self.behaviour.inject_expired_external_addr(addr) + } + fn inject_listener_error(&mut self, id: ListenerId, err: &(dyn std::error::Error + 'static)) { self.behaviour.inject_listener_error(id, err); } diff --git a/client/network/src/protocol/notifications/tests.rs b/client/network/src/protocol/notifications/tests.rs index f159a8e631782..2f1a42652882c 100644 --- a/client/network/src/protocol/notifications/tests.rs +++ b/client/network/src/protocol/notifications/tests.rs @@ -97,7 +97,7 @@ fn build_nodes() -> (Swarm, Swarm) { behaviour, keypairs[index].public().into_peer_id() ); - Swarm::listen_on(&mut swarm, addrs[index].clone()).unwrap(); + swarm.listen_on(addrs[index].clone()).unwrap(); out.push(swarm); } @@ -192,18 +192,26 @@ impl NetworkBehaviour for CustomProtoWithAddr { self.inner.inject_dial_failure(peer_id) } - fn inject_new_listen_addr(&mut self, addr: &Multiaddr) { - self.inner.inject_new_listen_addr(addr) + fn inject_new_listener(&mut self, id: ListenerId) { + self.inner.inject_new_listener(id) } - fn inject_expired_listen_addr(&mut self, addr: &Multiaddr) { - self.inner.inject_expired_listen_addr(addr) + fn inject_new_listen_addr(&mut self, id: ListenerId, addr: &Multiaddr) { + self.inner.inject_new_listen_addr(id, addr) + } + + fn inject_expired_listen_addr(&mut self, id: ListenerId, addr: &Multiaddr) { + self.inner.inject_expired_listen_addr(id, addr) } fn inject_new_external_addr(&mut self, addr: &Multiaddr) { self.inner.inject_new_external_addr(addr) } + fn inject_expired_external_addr(&mut self, addr: &Multiaddr) { + self.inner.inject_expired_external_addr(addr) + } + fn inject_listener_error(&mut self, id: ListenerId, err: &(dyn error::Error + 'static)) { self.inner.inject_listener_error(id, err); } diff --git a/client/network/src/request_responses.rs b/client/network/src/request_responses.rs index 1b23ee3699c9b..e822314c4bf94 100644 --- a/client/network/src/request_responses.rs +++ b/client/network/src/request_responses.rs @@ -428,9 +428,15 @@ impl NetworkBehaviour for RequestResponsesBehaviour { } } - fn inject_expired_listen_addr(&mut self, addr: &Multiaddr) { + fn inject_expired_external_addr(&mut self, addr: &Multiaddr) { for (p, _) in self.protocols.values_mut() { - NetworkBehaviour::inject_expired_listen_addr(p, addr) + NetworkBehaviour::inject_expired_external_addr(p, addr) + } + } + + fn inject_expired_listen_addr(&mut self, id: ListenerId, addr: &Multiaddr) { + for (p, _) in self.protocols.values_mut() { + NetworkBehaviour::inject_expired_listen_addr(p, id, addr) } } @@ -440,9 +446,15 @@ impl NetworkBehaviour for RequestResponsesBehaviour { } } - fn inject_new_listen_addr(&mut self, addr: &Multiaddr) { + fn inject_new_listener(&mut self, id: ListenerId) { + for (p, _) in self.protocols.values_mut() { + NetworkBehaviour::inject_new_listener(p, id) + } + } + + fn inject_new_listen_addr(&mut self, id: ListenerId, addr: &Multiaddr) { for (p, _) in self.protocols.values_mut() { - NetworkBehaviour::inject_new_listen_addr(p, addr) + NetworkBehaviour::inject_new_listen_addr(p, id, addr) } } @@ -930,7 +942,7 @@ mod tests { let mut swarm = Swarm::new(transport, behaviour, keypair.public().into_peer_id()); let listen_addr: Multiaddr = format!("/memory/{}", rand::random::()).parse().unwrap(); - Swarm::listen_on(&mut swarm, listen_addr.clone()).unwrap(); + swarm.listen_on(listen_addr.clone()).unwrap(); (swarm, listen_addr) } @@ -1182,7 +1194,7 @@ mod tests { // Ask swarm 1 to dial swarm 2. There isn't any discovery mechanism in place in this test, // so they wouldn't connect to each other. - Swarm::dial_addr(&mut swarm_1, listen_add_2).unwrap(); + swarm_1.dial_addr(listen_add_2).unwrap(); // Run swarm 2 in the background, receiving two requests. pool.spawner().spawn_obj( diff --git a/client/network/src/service.rs b/client/network/src/service.rs index f8a3e2a7d3942..8f23f2d6b2272 100644 --- a/client/network/src/service.rs +++ b/client/network/src/service.rs @@ -465,47 +465,47 @@ impl NetworkWorker { /// Returns the number of peers we're connected to. pub fn num_connected_peers(&self) -> usize { - self.network_service.user_protocol().num_connected_peers() + self.network_service.behaviour().user_protocol().num_connected_peers() } /// Returns the number of peers we're connected to and that are being queried. pub fn num_active_peers(&self) -> usize { - self.network_service.user_protocol().num_active_peers() + self.network_service.behaviour().user_protocol().num_active_peers() } /// Current global sync state. pub fn sync_state(&self) -> SyncState { - self.network_service.user_protocol().sync_state() + self.network_service.behaviour().user_protocol().sync_state() } /// Target sync block number. pub fn best_seen_block(&self) -> Option> { - self.network_service.user_protocol().best_seen_block() + self.network_service.behaviour().user_protocol().best_seen_block() } /// Number of peers participating in syncing. pub fn num_sync_peers(&self) -> u32 { - self.network_service.user_protocol().num_sync_peers() + self.network_service.behaviour().user_protocol().num_sync_peers() } /// Number of blocks in the import queue. pub fn num_queued_blocks(&self) -> u32 { - self.network_service.user_protocol().num_queued_blocks() + self.network_service.behaviour().user_protocol().num_queued_blocks() } /// Returns the number of downloaded blocks. pub fn num_downloaded_blocks(&self) -> usize { - self.network_service.user_protocol().num_downloaded_blocks() + self.network_service.behaviour().user_protocol().num_downloaded_blocks() } /// Number of active sync requests. pub fn num_sync_requests(&self) -> usize { - self.network_service.user_protocol().num_sync_requests() + self.network_service.behaviour().user_protocol().num_sync_requests() } /// Adds an address for a node. pub fn add_known_address(&mut self, peer_id: PeerId, addr: Multiaddr) { - self.network_service.add_known_address(peer_id, addr); + self.network_service.behaviour_mut().add_known_address(peer_id, addr); } /// Return a `NetworkService` that can be shared through the code base and can be used to @@ -516,12 +516,12 @@ impl NetworkWorker { /// You must call this when a new block is finalized by the client. pub fn on_block_finalized(&mut self, hash: B::Hash, header: B::Header) { - self.network_service.user_protocol_mut().on_block_finalized(hash, &header); + self.network_service.behaviour_mut().user_protocol_mut().on_block_finalized(hash, &header); } /// Inform the network service about new best imported block. pub fn new_best_block_imported(&mut self, hash: B::Hash, number: NumberFor) { - self.network_service.user_protocol_mut().new_best_block_imported(hash, number); + self.network_service.behaviour_mut().user_protocol_mut().new_best_block_imported(hash, number); } /// Returns the local `PeerId`. @@ -542,15 +542,15 @@ impl NetworkWorker { /// everywhere about this. Please don't use this function to retrieve actual information. pub fn network_state(&mut self) -> NetworkState { let swarm = &mut self.network_service; - let open = swarm.user_protocol().open_peers().cloned().collect::>(); + let open = swarm.behaviour_mut().user_protocol().open_peers().cloned().collect::>(); let connected_peers = { let swarm = &mut *swarm; open.iter().filter_map(move |peer_id| { - let known_addresses = NetworkBehaviour::addresses_of_peer(&mut **swarm, peer_id) + let known_addresses = NetworkBehaviour::addresses_of_peer(swarm.behaviour_mut(), peer_id) .into_iter().collect(); - let endpoint = if let Some(e) = swarm.node(peer_id).map(|i| i.endpoint()) { + let endpoint = if let Some(e) = swarm.behaviour_mut().node(peer_id).map(|i| i.endpoint()) { e.clone().into() } else { error!(target: "sub-libp2p", "Found state inconsistency between custom protocol \ @@ -560,9 +560,9 @@ impl NetworkWorker { Some((peer_id.to_base58(), NetworkStatePeer { endpoint, - version_string: swarm.node(peer_id) + version_string: swarm.behaviour_mut().node(peer_id) .and_then(|i| i.client_version().map(|s| s.to_owned())), - latest_ping_time: swarm.node(peer_id).and_then(|i| i.latest_ping()), + latest_ping_time: swarm.behaviour_mut().node(peer_id).and_then(|i| i.latest_ping()), known_addresses, })) }).collect() @@ -570,14 +570,14 @@ impl NetworkWorker { let not_connected_peers = { let swarm = &mut *swarm; - swarm.known_peers().into_iter() + swarm.behaviour_mut().known_peers().into_iter() .filter(|p| open.iter().all(|n| n != p)) .map(move |peer_id| { (peer_id.to_base58(), NetworkStateNotConnectedPeer { - version_string: swarm.node(&peer_id) + version_string: swarm.behaviour_mut().node(&peer_id) .and_then(|i| i.client_version().map(|s| s.to_owned())), - latest_ping_time: swarm.node(&peer_id).and_then(|i| i.latest_ping()), - known_addresses: NetworkBehaviour::addresses_of_peer(&mut **swarm, &peer_id) + latest_ping_time: swarm.behaviour_mut().node(&peer_id).and_then(|i| i.latest_ping()), + known_addresses: NetworkBehaviour::addresses_of_peer(swarm.behaviour_mut(), &peer_id) .into_iter().collect(), }) }) @@ -585,8 +585,8 @@ impl NetworkWorker { }; let peer_id = Swarm::::local_peer_id(&swarm).to_base58(); - let listened_addresses = Swarm::::listeners(&swarm).cloned().collect(); - let external_addresses = Swarm::::external_addresses(&swarm) + let listened_addresses = swarm.listeners().cloned().collect(); + let external_addresses = swarm.external_addresses() .map(|r| &r.addr) .cloned() .collect(); @@ -597,13 +597,13 @@ impl NetworkWorker { external_addresses, connected_peers, not_connected_peers, - peerset: swarm.user_protocol_mut().peerset_debug_info(), + peerset: swarm.behaviour_mut().user_protocol_mut().peerset_debug_info(), } } /// Get currently connected peers. pub fn peers_debug_info(&mut self) -> Vec<(PeerId, PeerInfo)> { - self.network_service.user_protocol_mut() + self.network_service.behaviour_mut().user_protocol_mut() .peers_info() .map(|(id, info)| (id.clone(), info.clone())) .collect() @@ -1354,7 +1354,7 @@ impl Future for NetworkWorker { // Check for new incoming light client requests. if let Some(light_client_rqs) = this.light_client_rqs.as_mut() { while let Poll::Ready(Some(rq)) = light_client_rqs.poll_next_unpin(cx) { - let result = this.network_service.light_client_request(rq); + let result = this.network_service.behaviour_mut().light_client_request(rq); match result { Ok(()) => {}, Err(light_client_requests::sender::SendRequestError::TooManyRequests) => { @@ -1393,46 +1393,46 @@ impl Future for NetworkWorker { match msg { ServiceToWorkerMsg::AnnounceBlock(hash, data) => - this.network_service.user_protocol_mut().announce_block(hash, data), + this.network_service.behaviour_mut().user_protocol_mut().announce_block(hash, data), ServiceToWorkerMsg::RequestJustification(hash, number) => - this.network_service.user_protocol_mut().request_justification(&hash, number), + this.network_service.behaviour_mut().user_protocol_mut().request_justification(&hash, number), ServiceToWorkerMsg::PropagateTransaction(hash) => this.tx_handler_controller.propagate_transaction(hash), ServiceToWorkerMsg::PropagateTransactions => this.tx_handler_controller.propagate_transactions(), ServiceToWorkerMsg::GetValue(key) => - this.network_service.get_value(&key), + this.network_service.behaviour_mut().get_value(&key), ServiceToWorkerMsg::PutValue(key, value) => - this.network_service.put_value(key, value), + this.network_service.behaviour_mut().put_value(key, value), ServiceToWorkerMsg::SetReservedOnly(reserved_only) => - this.network_service.user_protocol_mut().set_reserved_only(reserved_only), + this.network_service.behaviour_mut().user_protocol_mut().set_reserved_only(reserved_only), ServiceToWorkerMsg::SetReserved(peers) => - this.network_service.user_protocol_mut().set_reserved_peers(peers), + this.network_service.behaviour_mut().user_protocol_mut().set_reserved_peers(peers), ServiceToWorkerMsg::AddReserved(peer_id) => - this.network_service.user_protocol_mut().add_reserved_peer(peer_id), + this.network_service.behaviour_mut().user_protocol_mut().add_reserved_peer(peer_id), ServiceToWorkerMsg::RemoveReserved(peer_id) => - this.network_service.user_protocol_mut().remove_reserved_peer(peer_id), + this.network_service.behaviour_mut().user_protocol_mut().remove_reserved_peer(peer_id), ServiceToWorkerMsg::AddSetReserved(protocol, peer_id) => - this.network_service.user_protocol_mut().add_set_reserved_peer(protocol, peer_id), + this.network_service.behaviour_mut().user_protocol_mut().add_set_reserved_peer(protocol, peer_id), ServiceToWorkerMsg::RemoveSetReserved(protocol, peer_id) => - this.network_service.user_protocol_mut().remove_set_reserved_peer(protocol, peer_id), + this.network_service.behaviour_mut().user_protocol_mut().remove_set_reserved_peer(protocol, peer_id), ServiceToWorkerMsg::AddKnownAddress(peer_id, addr) => - this.network_service.add_known_address(peer_id, addr), + this.network_service.behaviour_mut().add_known_address(peer_id, addr), ServiceToWorkerMsg::AddToPeersSet(protocol, peer_id) => - this.network_service.user_protocol_mut().add_to_peers_set(protocol, peer_id), + this.network_service.behaviour_mut().user_protocol_mut().add_to_peers_set(protocol, peer_id), ServiceToWorkerMsg::RemoveFromPeersSet(protocol, peer_id) => - this.network_service.user_protocol_mut().remove_from_peers_set(protocol, peer_id), + this.network_service.behaviour_mut().user_protocol_mut().remove_from_peers_set(protocol, peer_id), ServiceToWorkerMsg::SyncFork(peer_ids, hash, number) => - this.network_service.user_protocol_mut().set_sync_fork_request(peer_ids, &hash, number), + this.network_service.behaviour_mut().user_protocol_mut().set_sync_fork_request(peer_ids, &hash, number), ServiceToWorkerMsg::EventStream(sender) => this.event_streams.push(sender), ServiceToWorkerMsg::Request { target, protocol, request, pending_response, connect } => { - this.network_service.send_request(&target, &protocol, request, pending_response, connect); + this.network_service.behaviour_mut().send_request(&target, &protocol, request, pending_response, connect); }, ServiceToWorkerMsg::DisconnectPeer(who, protocol_name) => - this.network_service.user_protocol_mut().disconnect_peer(&who, &protocol_name), + this.network_service.behaviour_mut().user_protocol_mut().disconnect_peer(&who, &protocol_name), ServiceToWorkerMsg::NewBestBlockImported(hash, number) => - this.network_service.user_protocol_mut().new_best_block_imported(hash, number), + this.network_service.behaviour_mut().user_protocol_mut().new_best_block_imported(hash, number), } } @@ -1777,7 +1777,7 @@ impl Future for NetworkWorker { }; } - let num_connected_peers = this.network_service.user_protocol_mut().num_connected_peers(); + let num_connected_peers = this.network_service.behaviour_mut().user_protocol_mut().num_connected_peers(); // Update the variables shared with the `NetworkService`. this.num_connected.store(num_connected_peers, Ordering::Relaxed); @@ -1789,7 +1789,7 @@ impl Future for NetworkWorker { *this.external_addresses.lock() = external_addresses; } - let is_major_syncing = match this.network_service.user_protocol_mut().sync_state() { + let is_major_syncing = match this.network_service.behaviour_mut().user_protocol_mut().sync_state() { SyncState::Idle => false, SyncState::Downloading => true, }; @@ -1799,21 +1799,21 @@ impl Future for NetworkWorker { this.is_major_syncing.store(is_major_syncing, Ordering::Relaxed); if let Some(metrics) = this.metrics.as_ref() { - for (proto, buckets) in this.network_service.num_entries_per_kbucket() { + for (proto, buckets) in this.network_service.behaviour_mut().num_entries_per_kbucket() { for (lower_ilog2_bucket_bound, num_entries) in buckets { metrics.kbuckets_num_nodes .with_label_values(&[&proto.as_ref(), &lower_ilog2_bucket_bound.to_string()]) .set(num_entries as u64); } } - for (proto, num_entries) in this.network_service.num_kademlia_records() { + for (proto, num_entries) in this.network_service.behaviour_mut().num_kademlia_records() { metrics.kademlia_records_count.with_label_values(&[&proto.as_ref()]).set(num_entries as u64); } - for (proto, num_entries) in this.network_service.kademlia_records_total_size() { + for (proto, num_entries) in this.network_service.behaviour_mut().kademlia_records_total_size() { metrics.kademlia_records_sizes_total.with_label_values(&[&proto.as_ref()]).set(num_entries as u64); } - metrics.peerset_num_discovered.set(this.network_service.user_protocol().num_discovered_peers() as u64); - metrics.peerset_num_requested.set(this.network_service.user_protocol().requested_peers().count() as u64); + metrics.peerset_num_discovered.set(this.network_service.behaviour_mut().user_protocol().num_discovered_peers() as u64); + metrics.peerset_num_requested.set(this.network_service.behaviour_mut().user_protocol().requested_peers().count() as u64); metrics.pending_connections.set( Swarm::network_info(&this.network_service).connection_counters().num_pending() as u64 ); @@ -1841,13 +1841,13 @@ impl<'a, B: BlockT> Link for NetworkLink<'a, B> { count: usize, results: Vec<(Result>, BlockImportError>, B::Hash)> ) { - self.protocol.user_protocol_mut().on_blocks_processed(imported, count, results) + self.protocol.behaviour_mut().user_protocol_mut().on_blocks_processed(imported, count, results) } fn justification_imported(&mut self, who: PeerId, hash: &B::Hash, number: NumberFor, success: bool) { - self.protocol.user_protocol_mut().justification_import_result(who, hash.clone(), number, success); + self.protocol.behaviour_mut().user_protocol_mut().justification_import_result(who, hash.clone(), number, success); } fn request_justification(&mut self, hash: &B::Hash, number: NumberFor) { - self.protocol.user_protocol_mut().request_justification(hash, number) + self.protocol.behaviour_mut().user_protocol_mut().request_justification(hash, number) } } diff --git a/client/network/src/utils.rs b/client/network/src/utils.rs index 02673ef49fb4c..b2ae03777e651 100644 --- a/client/network/src/utils.rs +++ b/client/network/src/utils.rs @@ -59,6 +59,11 @@ impl LruHashSet { } false } + + /// Removes an element from the set if it is present. + pub fn remove(&mut self, e: &T) -> bool { + self.set.remove(e) + } } #[cfg(test)] diff --git a/client/network/test/Cargo.toml b/client/network/test/Cargo.toml index 4fc1aa740040d..18a8d5cf8ca0a 100644 --- a/client/network/test/Cargo.toml +++ b/client/network/test/Cargo.toml @@ -20,7 +20,7 @@ parking_lot = "0.11.1" futures = "0.3.9" futures-timer = "3.0.1" rand = "0.7.2" -libp2p = { version = "0.36.0", default-features = false } +libp2p = { version = "0.37.1", default-features = false } sp-consensus = { version = "0.9.0", path = "../../../primitives/consensus/common" } sc-consensus = { version = "0.9.0", path = "../../consensus/common" } sc-client-api = { version = "3.0.0", path = "../../api" } diff --git a/client/peerset/Cargo.toml b/client/peerset/Cargo.toml index 984bfc5e835ff..5910116ec01c1 100644 --- a/client/peerset/Cargo.toml +++ b/client/peerset/Cargo.toml @@ -16,7 +16,7 @@ targets = ["x86_64-unknown-linux-gnu"] [dependencies] futures = "0.3.9" -libp2p = { version = "0.36.0", default-features = false } +libp2p = { version = "0.37.1", default-features = false } sp-utils = { version = "3.0.0", path = "../../primitives/utils"} log = "0.4.8" serde_json = "1.0.41" diff --git a/client/telemetry/Cargo.toml b/client/telemetry/Cargo.toml index ab02104c15c35..6e6ae408247a3 100644 --- a/client/telemetry/Cargo.toml +++ b/client/telemetry/Cargo.toml @@ -18,7 +18,7 @@ targets = ["x86_64-unknown-linux-gnu"] parking_lot = "0.11.1" futures = "0.3.9" wasm-timer = "0.2.5" -libp2p = { version = "0.36.0", default-features = false, features = ["dns-async-std", "tcp-async-io", "wasm-ext", "websocket"] } +libp2p = { version = "0.37.1", default-features = false, features = ["dns-async-std", "tcp-async-io", "wasm-ext", "websocket"] } log = "0.4.8" pin-project = "1.0.4" rand = "0.7.2" diff --git a/primitives/consensus/common/Cargo.toml b/primitives/consensus/common/Cargo.toml index 6c3ae5fc060bf..038a28ddab351 100644 --- a/primitives/consensus/common/Cargo.toml +++ b/primitives/consensus/common/Cargo.toml @@ -16,7 +16,7 @@ targets = ["x86_64-unknown-linux-gnu"] [dependencies] thiserror = "1.0.21" -libp2p = { version = "0.36.0", default-features = false } +libp2p = { version = "0.37.1", default-features = false } log = "0.4.8" sp-core = { path= "../../core", version = "3.0.0"} sp-inherents = { version = "3.0.0", path = "../../inherents" } diff --git a/utils/browser/Cargo.toml b/utils/browser/Cargo.toml index 3a11df62dc254..31403a5e6fa96 100644 --- a/utils/browser/Cargo.toml +++ b/utils/browser/Cargo.toml @@ -16,10 +16,10 @@ targets = ["x86_64-unknown-linux-gnu"] futures = { version = "0.3", features = ["compat"] } futures01 = { package = "futures", version = "0.1.29" } log = "0.4.8" -libp2p-wasm-ext = { version = "0.28", features = ["websocket"] } +libp2p-wasm-ext = { version = "0.28.1", features = ["websocket"] } console_error_panic_hook = "0.1.6" js-sys = "0.3.34" -wasm-bindgen = "0.2.57" +wasm-bindgen = "0.2.73" wasm-bindgen-futures = "0.4.18" kvdb-web = "0.9.0" sp-database = { version = "3.0.0", path = "../../primitives/database" } From 48b36221497b8b1bec7ea139c0df30e28df31916 Mon Sep 17 00:00:00 2001 From: Pierre Krieger Date: Thu, 15 Apr 2021 13:33:28 +0200 Subject: [PATCH 2/3] Line widths --- client/network/src/service.rs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/client/network/src/service.rs b/client/network/src/service.rs index 8f23f2d6b2272..e856c6ddf7216 100644 --- a/client/network/src/service.rs +++ b/client/network/src/service.rs @@ -1812,8 +1812,12 @@ impl Future for NetworkWorker { for (proto, num_entries) in this.network_service.behaviour_mut().kademlia_records_total_size() { metrics.kademlia_records_sizes_total.with_label_values(&[&proto.as_ref()]).set(num_entries as u64); } - metrics.peerset_num_discovered.set(this.network_service.behaviour_mut().user_protocol().num_discovered_peers() as u64); - metrics.peerset_num_requested.set(this.network_service.behaviour_mut().user_protocol().requested_peers().count() as u64); + metrics.peerset_num_discovered.set( + this.network_service.behaviour_mut().user_protocol().num_discovered_peers() as u64 + ); + metrics.peerset_num_requested.set( + this.network_service.behaviour_mut().user_protocol().requested_peers().count() as u64 + ); metrics.pending_connections.set( Swarm::network_info(&this.network_service).connection_counters().num_pending() as u64 ); From 4f58d765178413c43ef9ef1bf87ea69d3226a6cd Mon Sep 17 00:00:00 2001 From: Pierre Krieger Date: Fri, 16 Apr 2021 09:22:16 +0200 Subject: [PATCH 3/3] Fix tests --- client/network/src/discovery.rs | 4 ++-- client/network/src/protocol/notifications/tests.rs | 4 ++-- client/network/src/request_responses.rs | 8 ++++---- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/client/network/src/discovery.rs b/client/network/src/discovery.rs index fd11005cfbe79..f6273c9fb3e02 100644 --- a/client/network/src/discovery.rs +++ b/client/network/src/discovery.rs @@ -931,13 +931,13 @@ mod tests { DiscoveryOut::UnroutablePeer(other) | DiscoveryOut::Discovered(other) => { // Call `add_self_reported_address` to simulate identify happening. let addr = swarms.iter().find_map(|(s, a)| - if s.local_peer_id == other { + if s.behaviour().local_peer_id == other { Some(a.clone()) } else { None }) .unwrap(); - swarms[swarm_n].0.add_self_reported_address( + swarms[swarm_n].0.behaviour_mut().add_self_reported_address( &other, [protocol_name_from_protocol_id(&protocol_id)].iter(), addr, diff --git a/client/network/src/protocol/notifications/tests.rs b/client/network/src/protocol/notifications/tests.rs index 2f1a42652882c..8efe897afec3a 100644 --- a/client/network/src/protocol/notifications/tests.rs +++ b/client/network/src/protocol/notifications/tests.rs @@ -253,7 +253,7 @@ fn reconnect_after_disconnect() { ServiceState::NotConnected => { service1_state = ServiceState::FirstConnec; if service2_state == ServiceState::FirstConnec { - service1.disconnect_peer( + service1.behaviour_mut().disconnect_peer( Swarm::local_peer_id(&service2), sc_peerset::SetId::from(0) ); @@ -275,7 +275,7 @@ fn reconnect_after_disconnect() { ServiceState::NotConnected => { service2_state = ServiceState::FirstConnec; if service1_state == ServiceState::FirstConnec { - service1.disconnect_peer( + service1.behaviour_mut().disconnect_peer( Swarm::local_peer_id(&service2), sc_peerset::SetId::from(0) ); diff --git a/client/network/src/request_responses.rs b/client/network/src/request_responses.rs index e822314c4bf94..3762cf70e71d4 100644 --- a/client/network/src/request_responses.rs +++ b/client/network/src/request_responses.rs @@ -1012,7 +1012,7 @@ mod tests { match swarm.next_event().await { SwarmEvent::ConnectionEstablished { peer_id, .. } => { let (sender, receiver) = oneshot::channel(); - swarm.send_request( + swarm.behaviour_mut().send_request( &peer_id, protocol_name, b"this is a request".to_vec(), @@ -1102,7 +1102,7 @@ mod tests { match swarm.next_event().await { SwarmEvent::ConnectionEstablished { peer_id, .. } => { let (sender, receiver) = oneshot::channel(); - swarm.send_request( + swarm.behaviour_mut().send_request( &peer_id, protocol_name, b"this is a request".to_vec(), @@ -1247,14 +1247,14 @@ mod tests { SwarmEvent::ConnectionEstablished { peer_id, .. } => { let (sender_1, receiver_1) = oneshot::channel(); let (sender_2, receiver_2) = oneshot::channel(); - swarm_1.send_request( + swarm_1.behaviour_mut().send_request( &peer_id, protocol_name_1, b"this is a request".to_vec(), sender_1, IfDisconnected::ImmediateError, ); - swarm_1.send_request( + swarm_1.behaviour_mut().send_request( &peer_id, protocol_name_2, b"this is a request".to_vec(),