From 7b79b9b26f224e47932aa9dc9184a657d884dd01 Mon Sep 17 00:00:00 2001 From: Dennis Schwerdel Date: Thu, 28 May 2020 08:57:25 +0200 Subject: [PATCH] For mapped ipv4 add plain ip4 to known addresses --- src/cloud.rs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/cloud.rs b/src/cloud.rs index 57e7fef..188811f 100644 --- a/src/cloud.rs +++ b/src/cloud.rs @@ -114,10 +114,18 @@ impl PeerList { fn add(&mut self, node_id: NodeId, addr: SocketAddr, peer_timeout: u16) { if self.nodes.insert(node_id, addr).is_none() { info!("New peer: {}", addr); + let mut alt_addrs = vec![]; + if let SocketAddr::V6(v6_addr) = addr { + if let Some(ipv4) = v6_addr.ip().to_ipv4() { + let v4_addr = SocketAddr::from((ipv4, v6_addr.port())); + alt_addrs.push(v4_addr); + self.addresses.insert(v4_addr, node_id); + } + } self.peers.insert(addr, PeerData { timeout: TS::now() + Time::from(self.timeout), node_id, - alt_addrs: vec![], + alt_addrs, peer_timeout }); self.addresses.insert(addr, node_id);