浏览代码

hosts: use host() not host_str() method in filter_addresses()

Also add an additional check and print a warning if an external address
enters the hostlist.
draoi 2 年之前
父节点
当前提交
5be7a372e8
共有 1 个文件被更改,包括 11 次插入1 次删除
  1. 11 1
      src/net/hosts.rs

+ 11 - 1
src/net/hosts.rs

@@ -935,6 +935,7 @@ impl Hosts {
         trace!(target: "net::hosts::check_addrs()", "[START]");
 
         let seeds = self.settings.read().await.seeds.clone();
+        let external_addrs = self.settings.read().await.external_addrs.clone();
 
         for (host, last_seen) in hosts {
             // Print a warning if we are trying to connect to a seed node in
@@ -948,6 +949,14 @@ impl Hosts {
                 continue
             }
 
+            if external_addrs.contains(&host) {
+                warn!(
+                    target: "net::hosts::check_addrs",
+                    "External addr={} has entered the hostlist! Skipping", host.clone(),
+                );
+                continue
+            }
+
             if let Err(e) = self.try_register(host.clone(), HostState::Connect) {
                 trace!(
                     target: "net::hosts::check_addrs",
@@ -1183,12 +1192,13 @@ impl Hosts {
                 continue
             }
 
+            let host = addr_.host().unwrap();
             let host_str = addr_.host_str().unwrap();
 
             if !settings.localnet {
                 // Our own external addresses should never enter the hosts set.
                 for ext in &settings.external_addrs {
-                    if host_str == ext.host_str().unwrap() {
+                    if host == ext.host().unwrap() {
                         debug!(
                             target: "net::hosts::filter_addresses",
                             "[{}] is our own external addr. Skipping", addr_,