From 6fc73c2d2de1cd37ac8d9e51d6be5d61484fcf0f Mon Sep 17 00:00:00 2001 From: lunar-mining Date: Fri, 24 Jun 2022 11:56:26 +0200 Subject: [PATCH] net: add addr message subscription to seed protocol class also add debug info to seed session --- src/net/protocol/protocol_seed.rs | 23 +++++++++++++---------- src/net/session/seed_session.rs | 10 +++++++--- 2 files changed, 20 insertions(+), 13 deletions(-) diff --git a/src/net/protocol/protocol_seed.rs b/src/net/protocol/protocol_seed.rs index 4c1243787..e6378ba89 100644 --- a/src/net/protocol/protocol_seed.rs +++ b/src/net/protocol/protocol_seed.rs @@ -7,7 +7,9 @@ use smol::Executor; use crate::Result; use super::{ - super::{message, ChannelPtr, HostsPtr, P2pPtr, SettingsPtr}, + super::{ + message, message_subscriber::MessageSubscription, ChannelPtr, HostsPtr, P2pPtr, SettingsPtr, + }, ProtocolBase, ProtocolBasePtr, }; @@ -16,6 +18,7 @@ pub struct ProtocolSeed { channel: ChannelPtr, hosts: HostsPtr, settings: SettingsPtr, + addr_sub: MessageSubscription, } impl ProtocolSeed { @@ -24,7 +27,14 @@ impl ProtocolSeed { let hosts = p2p.hosts(); let settings = p2p.settings(); - Arc::new(Self { channel, hosts, settings }) + //// Create a subscription to address message. + let addr_sub = channel + .clone() + .subscribe_msg::() + .await + .expect("Missing addr dispatcher!"); + + Arc::new(Self { channel, hosts, settings, addr_sub }) } /// Sends own external address over a channel. Imports own external address @@ -50,13 +60,6 @@ impl ProtocolBase for ProtocolSeed { /// message and receives an address message. async fn start(self: Arc, _executor: Arc>) -> Result<()> { debug!(target: "net", "ProtocolSeed::start() [START]"); - // Create a subscription to address message. - let addr_sub = self - .channel - .clone() - .subscribe_msg::() - .await - .expect("Missing addrs dispatcher!"); // Send own address to the seed server. self.send_self_address().await?; @@ -66,7 +69,7 @@ impl ProtocolBase for ProtocolSeed { self.channel.clone().send(get_addr).await?; // Receive addresses. - let addrs_msg = addr_sub.receive().await?; + let addrs_msg = self.addr_sub.receive().await?; debug!(target: "net", "ProtocolSeed::start() received {} addrs", addrs_msg.addrs.len()); self.hosts.store(addrs_msg.addrs.clone()).await; diff --git a/src/net/session/seed_session.rs b/src/net/session/seed_session.rs index 928de552d..7d6f939c4 100644 --- a/src/net/session/seed_session.rs +++ b/src/net/session/seed_session.rs @@ -105,16 +105,20 @@ impl SeedSession { info!("Connected seed #{} [{}]", seed_index, seed); - self.clone().register_channel(channel.clone(), executor.clone()).await?; + if let Err(err) = + self.clone().register_channel(channel.clone(), executor.clone()).await + { + warn!("Failure during seed session #{} [{}]: {}", seed_index, seed, err); + } - debug!("Disconnecting from seed #{} [{}]", seed_index, seed); + info!("Disconnecting from seed #{} [{}]", seed_index, seed); channel.stop().await; debug!(target: "net", "SeedSession::start_seed(i={}) [END]", seed_index); Ok(()) } Err(err) => { - info!("Failure contacting seed #{} [{}]: {}", seed_index, seed, err); + warn!("Failure contacting seed #{} [{}]: {}", seed_index, seed, err); Err(err) } }