Skip to content
This repository was archived by the owner on Nov 15, 2023. It is now read-only.

Commit 244935a

Browse files
author
Roman S. Borschel
committed
Adapt to rust-libp2p#1440.
1 parent 9974d35 commit 244935a

File tree

12 files changed

+531
-359
lines changed

12 files changed

+531
-359
lines changed

Cargo.toml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -173,3 +173,9 @@ members = [
173173
[profile.release]
174174
# Substrate runtime requires unwinding.
175175
panic = "unwind"
176+
177+
[patch.crates-io]
178+
# libp2p = { path = "../rust-libp2p" }
179+
libp2p = { git = "https://github.com/romanb/rust-libp2p", branch = "multicon" }
180+
181+

client/network/src/debug_info.rs

Lines changed: 11 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
use fnv::FnvHashMap;
1818
use futures::prelude::*;
1919
use libp2p::Multiaddr;
20-
use libp2p::core::nodes::listeners::ListenerId;
20+
use libp2p::core::connection::{ConnectionId, ListenerId};
2121
use libp2p::core::{ConnectedPoint, either::EitherOutput, PeerId, PublicKey};
2222
use libp2p::swarm::{IntoProtocolsHandler, IntoProtocolsHandlerSelect, ProtocolsHandler};
2323
use libp2p::swarm::{NetworkBehaviour, NetworkBehaviourAction, PollParameters};
@@ -205,26 +205,15 @@ impl NetworkBehaviour for DebugInfoBehaviour {
205205
}
206206
}
207207

208-
fn inject_node_event(
208+
fn inject_event(
209209
&mut self,
210210
peer_id: PeerId,
211+
connection: ConnectionId,
211212
event: <<Self::ProtocolsHandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::OutEvent
212213
) {
213214
match event {
214-
EitherOutput::First(event) => self.ping.inject_node_event(peer_id, event),
215-
EitherOutput::Second(event) => self.identify.inject_node_event(peer_id, event),
216-
}
217-
}
218-
219-
fn inject_replaced(&mut self, peer_id: PeerId, closed_endpoint: ConnectedPoint, new_endpoint: ConnectedPoint) {
220-
self.ping.inject_replaced(peer_id.clone(), closed_endpoint.clone(), new_endpoint.clone());
221-
self.identify.inject_replaced(peer_id.clone(), closed_endpoint, new_endpoint.clone());
222-
223-
if let Some(entry) = self.nodes_info.get_mut(&peer_id) {
224-
entry.endpoint = new_endpoint;
225-
} else {
226-
error!(target: "sub-libp2p",
227-
"Disconnected from node we were not connected to {:?}", peer_id);
215+
EitherOutput::First(event) => self.ping.inject_event(peer_id, connection, event),
216+
EitherOutput::Second(event) => self.identify.inject_event(peer_id, connection, event),
228217
}
229218
}
230219

@@ -285,9 +274,10 @@ impl NetworkBehaviour for DebugInfoBehaviour {
285274
return Poll::Ready(NetworkBehaviourAction::DialAddress { address }),
286275
Poll::Ready(NetworkBehaviourAction::DialPeer { peer_id }) =>
287276
return Poll::Ready(NetworkBehaviourAction::DialPeer { peer_id }),
288-
Poll::Ready(NetworkBehaviourAction::SendEvent { peer_id, event }) =>
289-
return Poll::Ready(NetworkBehaviourAction::SendEvent {
277+
Poll::Ready(NetworkBehaviourAction::NotifyHandler { peer_id, handler, event }) =>
278+
return Poll::Ready(NetworkBehaviourAction::NotifyHandler {
290279
peer_id,
280+
handler,
291281
event: EitherOutput::First(event)
292282
}),
293283
Poll::Ready(NetworkBehaviourAction::ReportObservedAddr { address }) =>
@@ -314,9 +304,10 @@ impl NetworkBehaviour for DebugInfoBehaviour {
314304
return Poll::Ready(NetworkBehaviourAction::DialAddress { address }),
315305
Poll::Ready(NetworkBehaviourAction::DialPeer { peer_id }) =>
316306
return Poll::Ready(NetworkBehaviourAction::DialPeer { peer_id }),
317-
Poll::Ready(NetworkBehaviourAction::SendEvent { peer_id, event }) =>
318-
return Poll::Ready(NetworkBehaviourAction::SendEvent {
307+
Poll::Ready(NetworkBehaviourAction::NotifyHandler { peer_id, handler, event }) =>
308+
return Poll::Ready(NetworkBehaviourAction::NotifyHandler {
319309
peer_id,
310+
handler,
320311
event: EitherOutput::Second(event)
321312
}),
322313
Poll::Ready(NetworkBehaviourAction::ReportObservedAddr { address }) =>

client/network/src/discovery.rs

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@
4747
4848
use futures::prelude::*;
4949
use futures_timer::Delay;
50-
use libp2p::core::{nodes::listeners::ListenerId, ConnectedPoint, Multiaddr, PeerId, PublicKey};
50+
use libp2p::core::{connection::{ConnectionId, ListenerId}, ConnectedPoint, Multiaddr, PeerId, PublicKey};
5151
use libp2p::swarm::{ProtocolsHandler, NetworkBehaviour, NetworkBehaviourAction, PollParameters};
5252
use libp2p::kad::{Kademlia, KademliaEvent, Quorum, Record};
5353
use libp2p::kad::GetClosestPeersError;
@@ -149,6 +149,7 @@ impl DiscoveryBehaviour {
149149
/// If we didn't know this address before, also generates a `Discovered` event.
150150
pub fn add_known_address(&mut self, peer_id: PeerId, addr: Multiaddr) {
151151
if self.user_defined.iter().all(|(p, a)| *p != peer_id && *a != addr) {
152+
self.kademlia.add_address(&peer_id, addr.clone());
152153
self.discoveries.push_back(peer_id.clone());
153154
self.user_defined.push((peer_id, addr));
154155
}
@@ -269,10 +270,6 @@ impl NetworkBehaviour for DiscoveryBehaviour {
269270
NetworkBehaviour::inject_disconnected(&mut self.kademlia, peer_id, endpoint)
270271
}
271272

272-
fn inject_replaced(&mut self, peer_id: PeerId, closed: ConnectedPoint, opened: ConnectedPoint) {
273-
NetworkBehaviour::inject_replaced(&mut self.kademlia, peer_id, closed, opened)
274-
}
275-
276273
fn inject_addr_reach_failure(
277274
&mut self,
278275
peer_id: Option<&PeerId>,
@@ -282,12 +279,13 @@ impl NetworkBehaviour for DiscoveryBehaviour {
282279
NetworkBehaviour::inject_addr_reach_failure(&mut self.kademlia, peer_id, addr, error)
283280
}
284281

285-
fn inject_node_event(
282+
fn inject_event(
286283
&mut self,
287284
peer_id: PeerId,
285+
connection: ConnectionId,
288286
event: <Self::ProtocolsHandler as ProtocolsHandler>::OutEvent,
289287
) {
290-
NetworkBehaviour::inject_node_event(&mut self.kademlia, peer_id, event)
288+
NetworkBehaviour::inject_event(&mut self.kademlia, peer_id, connection, event)
291289
}
292290

293291
fn inject_new_external_addr(&mut self, addr: &Multiaddr) {
@@ -340,8 +338,9 @@ impl NetworkBehaviour for DiscoveryBehaviour {
340338
while let Poll::Ready(_) = self.next_kad_random_query.poll_unpin(cx) {
341339
let actually_started = if self.num_connections < self.discovery_only_if_under_num {
342340
let random_peer_id = PeerId::random();
343-
debug!(target: "sub-libp2p", "Libp2p <= Starting random Kademlia request for \
344-
{:?}", random_peer_id);
341+
debug!(target: "sub-libp2p",
342+
"Libp2p <= Starting random Kademlia request for {:?}",
343+
random_peer_id);
345344

346345
self.kademlia.get_closest_peers(random_peer_id);
347346
true
@@ -453,8 +452,8 @@ impl NetworkBehaviour for DiscoveryBehaviour {
453452
return Poll::Ready(NetworkBehaviourAction::DialAddress { address }),
454453
NetworkBehaviourAction::DialPeer { peer_id } =>
455454
return Poll::Ready(NetworkBehaviourAction::DialPeer { peer_id }),
456-
NetworkBehaviourAction::SendEvent { peer_id, event } =>
457-
return Poll::Ready(NetworkBehaviourAction::SendEvent { peer_id, event }),
455+
NetworkBehaviourAction::NotifyHandler { peer_id, handler, event } =>
456+
return Poll::Ready(NetworkBehaviourAction::NotifyHandler { peer_id, handler, event }),
458457
NetworkBehaviourAction::ReportObservedAddr { address } =>
459458
return Poll::Ready(NetworkBehaviourAction::ReportObservedAddr { address }),
460459
}
@@ -484,7 +483,7 @@ impl NetworkBehaviour for DiscoveryBehaviour {
484483
return Poll::Ready(NetworkBehaviourAction::DialAddress { address }),
485484
NetworkBehaviourAction::DialPeer { peer_id } =>
486485
return Poll::Ready(NetworkBehaviourAction::DialPeer { peer_id }),
487-
NetworkBehaviourAction::SendEvent { event, .. } =>
486+
NetworkBehaviourAction::NotifyHandler { event, .. } =>
488487
match event {}, // `event` is an enum with no variant
489488
NetworkBehaviourAction::ReportObservedAddr { address } =>
490489
return Poll::Ready(NetworkBehaviourAction::ReportObservedAddr { address }),

client/network/src/protocol.rs

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ use bytes::{Bytes, BytesMut};
2020
use futures::prelude::*;
2121
use generic_proto::{GenericProto, GenericProtoOut};
2222
use libp2p::{Multiaddr, PeerId};
23-
use libp2p::core::{ConnectedPoint, nodes::listeners::ListenerId};
23+
use libp2p::core::{ConnectedPoint, connection::{ConnectionId, ListenerId}};
2424
use libp2p::swarm::{ProtocolsHandler, IntoProtocolsHandler};
2525
use libp2p::swarm::{NetworkBehaviour, NetworkBehaviourAction, PollParameters};
2626
use sp_core::{
@@ -1844,12 +1844,13 @@ impl<B: BlockT, H: ExHashT> NetworkBehaviour for Protocol<B, H> {
18441844
self.behaviour.inject_disconnected(peer_id, endpoint)
18451845
}
18461846

1847-
fn inject_node_event(
1847+
fn inject_event(
18481848
&mut self,
18491849
peer_id: PeerId,
1850+
connection: ConnectionId,
18501851
event: <<Self::ProtocolsHandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::OutEvent,
18511852
) {
1852-
self.behaviour.inject_node_event(peer_id, event)
1853+
self.behaviour.inject_event(peer_id, connection, event)
18531854
}
18541855

18551856
fn poll(
@@ -1908,8 +1909,8 @@ impl<B: BlockT, H: ExHashT> NetworkBehaviour for Protocol<B, H> {
19081909
return Poll::Ready(NetworkBehaviourAction::DialAddress { address }),
19091910
Poll::Ready(NetworkBehaviourAction::DialPeer { peer_id }) =>
19101911
return Poll::Ready(NetworkBehaviourAction::DialPeer { peer_id }),
1911-
Poll::Ready(NetworkBehaviourAction::SendEvent { peer_id, event }) =>
1912-
return Poll::Ready(NetworkBehaviourAction::SendEvent { peer_id, event }),
1912+
Poll::Ready(NetworkBehaviourAction::NotifyHandler { peer_id, handler, event }) =>
1913+
return Poll::Ready(NetworkBehaviourAction::NotifyHandler { peer_id, handler, event }),
19131914
Poll::Ready(NetworkBehaviourAction::ReportObservedAddr { address }) =>
19141915
return Poll::Ready(NetworkBehaviourAction::ReportObservedAddr { address }),
19151916
};
@@ -1973,10 +1974,6 @@ impl<B: BlockT, H: ExHashT> NetworkBehaviour for Protocol<B, H> {
19731974
}
19741975
}
19751976

1976-
fn inject_replaced(&mut self, peer_id: PeerId, closed_endpoint: ConnectedPoint, new_endpoint: ConnectedPoint) {
1977-
self.behaviour.inject_replaced(peer_id, closed_endpoint, new_endpoint)
1978-
}
1979-
19801977
fn inject_addr_reach_failure(
19811978
&mut self,
19821979
peer_id: Option<&PeerId>,

client/network/src/protocol/block_requests.rs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ use libp2p::{
3535
ConnectedPoint,
3636
Multiaddr,
3737
PeerId,
38+
connection::ConnectionId,
3839
upgrade::{InboundUpgrade, ReadOneError, UpgradeInfo, Negotiated},
3940
upgrade::{DeniedUpgrade, read_one, write_one}
4041
},
@@ -270,7 +271,12 @@ where
270271
fn inject_disconnected(&mut self, _peer: &PeerId, _info: ConnectedPoint) {
271272
}
272273

273-
fn inject_node_event(&mut self, peer: PeerId, Request(request, mut stream): Request<NegotiatedSubstream>) {
274+
fn inject_event(
275+
&mut self,
276+
peer: PeerId,
277+
connection: ConnectionId,
278+
Request(request, mut stream): Request<NegotiatedSubstream>
279+
) {
274280
match self.on_block_request(&peer, &request) {
275281
Ok(res) => {
276282
log::trace!("enqueueing block response for peer {} with {} blocks", peer, res.blocks.len());

0 commit comments

Comments
 (0)