mirror of
https://github.com/darkrenaissance/darkfi.git
synced 2026-04-28 03:00:18 -04:00
store: fix bug in filter_addrs() that was causing peers with the same ports as us to get dropped
This commit is contained in:
@@ -791,7 +791,8 @@ impl Hosts {
|
||||
trace!(target: "net::hosts:insert()", "[START]");
|
||||
|
||||
// First filter these address to ensure this peer doesn't exist in our black, gold or
|
||||
// whitelist and apply transport filtering.
|
||||
// whitelist and apply transport filtering. If we don't support this transport,
|
||||
// store the peer on our dark list to broadcast to other nodes.
|
||||
let filtered_addrs = self.filter_addresses(self.settings.clone(), addrs).await;
|
||||
let mut addrs_len = 0;
|
||||
|
||||
@@ -989,7 +990,7 @@ impl Hosts {
|
||||
settings: SettingsPtr,
|
||||
addrs: &[(Url, u64)],
|
||||
) -> Vec<(Url, u64)> {
|
||||
trace!(target: "net::hosts::filter_addresses()", "Filtering addrs: {:?}", addrs);
|
||||
debug!(target: "net::hosts::filter_addresses()", "Filtering addrs: {:?}", addrs);
|
||||
let mut ret = vec![];
|
||||
let localnet = self.settings.localnet;
|
||||
|
||||
@@ -1000,6 +1001,8 @@ impl Hosts {
|
||||
addr_.cannot_be_a_base() ||
|
||||
addr_.path_segments().is_some()
|
||||
{
|
||||
debug!(target: "net::hosts::filter_addresses()",
|
||||
"[{}] has invalid addr format. Skipping", addr_);
|
||||
continue
|
||||
}
|
||||
|
||||
@@ -1013,7 +1016,7 @@ impl Hosts {
|
||||
// Blacklist peers should never enter the hostlist.
|
||||
if self.container.contains(HostColor::Black as usize, addr_).await {
|
||||
warn!(target: "net::hosts::filter_addresses()",
|
||||
"Peer {} is blacklisted", addr_);
|
||||
"[{}] is blacklisted", addr_);
|
||||
continue
|
||||
}
|
||||
|
||||
@@ -1023,14 +1026,19 @@ impl Hosts {
|
||||
// Our own external addresses should never enter the hosts set.
|
||||
for ext in &settings.external_addrs {
|
||||
if host_str == ext.host_str().unwrap() {
|
||||
debug!(target: "net::hosts::filter_addresses()",
|
||||
"[{}] is our own external addr. Skipping", addr_);
|
||||
continue 'addr_loop
|
||||
}
|
||||
}
|
||||
}
|
||||
// On localnet, make sure ours ports don't enter the host set.
|
||||
for ext in &settings.external_addrs {
|
||||
if addr_.port() == ext.port() {
|
||||
continue 'addr_loop
|
||||
} else {
|
||||
// On localnet, make sure ours ports don't enter the host set.
|
||||
for ext in &settings.external_addrs {
|
||||
if addr_.port() == ext.port() {
|
||||
debug!(target: "net::hosts::filter_addresses()",
|
||||
"[{}] is our own localnet port. Skipping", addr_);
|
||||
continue 'addr_loop
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1042,6 +1050,8 @@ impl Hosts {
|
||||
// Should never be allowed in production, so we don't really care
|
||||
// about some of them (e.g. 0.0.0.0, or broadcast, etc.).
|
||||
if !localnet && self.is_local_host(addr).await {
|
||||
debug!(target: "net::hosts::filter_addresses()",
|
||||
"[{}] Filtering non-global ranges", addr_);
|
||||
continue
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user