ソースを参照

net: standardize format + fix logic error on protocol_seed, protocol_address self_my_addrs()

lunar-mining 2 年 前
コミット
cc602048d6
1 ファイル変更25 行追加10 行削除
  1. 25 10
      src/net/protocol/protocol_address.rs

+ 25 - 10
src/net/protocol/protocol_address.rs

@@ -156,19 +156,43 @@ impl ProtocolAddress {
         }
     }
 
+    // If it's an outbound session, we have an extern_addr, and address advertising
+    // is enabled, send our address.
     async fn send_my_addrs(self: Arc<Self>) -> Result<()> {
+        debug!(target: "net::protocol_address::send_my_addrs()", "[START]");
+        let type_id = self.channel.session_type_id();
+
+        if type_id != SESSION_OUTBOUND {
+            debug!(target: "net::protocol_address::send_my_addrs()", "Externaladdr not configured. Stopping");
+            return Ok(())
+        }
+
+        if self.settings.external_addrs.is_empty() {
+            debug!(target: "net::protocol_address::send_my_addrs()", "Externaladdr not configured. Stopping");
+            return Ok(())
+        }
+
+        // Do nothing if advertise is set to false
+        if self.settings.advertise == false {
+            debug!(target: "net::protocol_address::send_my_addrs()", "Advertise is false. Stopping");
+            return Ok(())
+        }
+
         debug!(
             target: "net::protocol_address::send_my_addrs()",
             "[START] address={}", self.channel.address(),
         );
 
         // See if we can do a version exchange with ourself.
+        debug!(target: "net::protocol_address", "Attempting to ping self");
         if self.session.ping_node(self.channel.address()).await {
             // We're online. Broadcast our address.
             let last_seen = UNIX_EPOCH.elapsed().unwrap().as_secs();
             let addrs = vec![(self.channel.address().clone(), last_seen)];
             let addrs_msg = AddrsMessage { addrs };
             self.channel.send(&addrs_msg).await?;
+        } else {
+            debug!(target: "net::protocol_address", "Ping self failed");
         }
 
         Ok(())
@@ -182,18 +206,9 @@ impl ProtocolBase for ProtocolAddress {
     async fn start(self: Arc<Self>, ex: Arc<Executor<'_>>) -> Result<()> {
         debug!(target: "net::protocol_address::start()", "START => address={}", self.channel.address());
 
-        let type_id = self.channel.session_type_id();
-
         self.jobsman.clone().start(ex.clone());
 
-        // If it's an outbound session, we have an extern_addr, and address advertising
-        // is enabled, send our address.
-        if type_id == SESSION_OUTBOUND &&
-            !self.settings.external_addrs.is_empty() &&
-            self.settings.advertise
-        {
-            self.jobsman.clone().spawn(self.clone().send_my_addrs(), ex.clone()).await;
-        }
+        self.jobsman.clone().spawn(self.clone().send_my_addrs(), ex.clone()).await;
 
         self.jobsman.clone().spawn(self.clone().handle_receive_addrs(), ex.clone()).await;
         self.jobsman.spawn(self.clone().handle_receive_get_addrs(), ex).await;