Do not verify announced ip address by default (#163)
Some checks failed
abi-consistent-check / build-and-compare (push) Has been cancelled
code-coverage / unittest-cov (push) Has been cancelled
rust / check (push) Has been cancelled
rust / test (push) Has been cancelled
rust / lints (push) Has been cancelled
functional-test / test (push) Has been cancelled

This commit is contained in:
Bo QIU 2024-08-20 14:39:58 +08:00 committed by GitHub
parent c337ff90fb
commit c1f465e009
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 24 additions and 10 deletions

View File

@ -24,6 +24,7 @@ pub struct Config {
pub max_idle_outgoing_peers: usize, pub max_idle_outgoing_peers: usize,
pub libp2p_nodes: Vec<Multiaddr>, pub libp2p_nodes: Vec<Multiaddr>,
pub private_ip_enabled: bool, pub private_ip_enabled: bool,
pub check_announced_ip: bool,
} }
impl Default for Config { impl Default for Config {
@ -35,6 +36,7 @@ impl Default for Config {
max_idle_outgoing_peers: 20, max_idle_outgoing_peers: 20,
libp2p_nodes: vec![], libp2p_nodes: vec![],
private_ip_enabled: false, private_ip_enabled: false,
check_announced_ip: false,
} }
} }
} }

View File

@ -447,7 +447,7 @@ impl Libp2pEventHandler {
if matches!(self.store.check_tx_completed(tx_id.seq).await, Ok(true)) { if matches!(self.store.check_tx_completed(tx_id.seq).await, Ok(true)) {
if let Ok(Some(tx)) = self.store.get_tx_by_seq_number(tx_id.seq).await { if let Ok(Some(tx)) = self.store.get_tx_by_seq_number(tx_id.seq).await {
if tx.id() == tx_id { if tx.id() == tx_id {
debug!(?tx_id, "Found file locally, responding to FindFile query"); trace!(?tx_id, "Found file locally, responding to FindFile query");
return match self.construct_announce_file_message(tx_id).await { return match self.construct_announce_file_message(tx_id).await {
Some(msg) => { Some(msg) => {
@ -463,7 +463,7 @@ impl Libp2pEventHandler {
// try from cache // try from cache
if let Some(mut msg) = self.file_location_cache.get_one(tx_id) { if let Some(mut msg) = self.file_location_cache.get_one(tx_id) {
debug!(?tx_id, "Found file in cache, responding to FindFile query"); trace!(?tx_id, "Found file in cache, responding to FindFile query");
msg.resend_timestamp = timestamp_now(); msg.resend_timestamp = timestamp_now();
self.publish(PubsubMessage::AnnounceFile(msg)); self.publish(PubsubMessage::AnnounceFile(msg));
@ -520,7 +520,7 @@ impl Libp2pEventHandler {
metrics::LIBP2P_HANDLE_PUBSUB_LATENCY_FIND_CHUNKS.clone(), metrics::LIBP2P_HANDLE_PUBSUB_LATENCY_FIND_CHUNKS.clone(),
); );
if d < TOLERABLE_DRIFT.neg() || d > *FIND_FILE_TIMEOUT { if d < TOLERABLE_DRIFT.neg() || d > *FIND_FILE_TIMEOUT {
debug!(%msg.timestamp, ?d, "Invalid timestamp, ignoring FindFile message"); debug!(%msg.timestamp, ?d, "Invalid timestamp, ignoring FindChunks message");
return MessageAcceptance::Ignore; return MessageAcceptance::Ignore;
} }
@ -554,7 +554,7 @@ impl Libp2pEventHandler {
_ => return MessageAcceptance::Accept, _ => return MessageAcceptance::Accept,
}; };
debug!(?msg, "Found chunks to respond FindChunks message"); trace!(?msg, "Found chunks to respond FindChunks message");
match self match self
.construct_announce_chunks_message(msg.tx_id, msg.index_start, msg.index_end) .construct_announce_chunks_message(msg.tx_id, msg.index_start, msg.index_end)
@ -625,7 +625,10 @@ impl Libp2pEventHandler {
} }
// verify announced ip address if required // verify announced ip address if required
if !self.config.private_ip_enabled && !self.verify_announced_address(&msg.peer_id, &addr) { if !self.config.private_ip_enabled
&& self.config.check_announced_ip
&& !self.verify_announced_address(&msg.peer_id, &addr)
{
return MessageAcceptance::Reject; return MessageAcceptance::Reject;
} }
@ -669,7 +672,10 @@ impl Libp2pEventHandler {
} }
// verify announced ip address if required // verify announced ip address if required
if !self.config.private_ip_enabled && !self.verify_announced_address(&msg.peer_id, &addr) { if !self.config.private_ip_enabled
&& self.config.check_announced_ip
&& !self.verify_announced_address(&msg.peer_id, &addr)
{
return MessageAcceptance::Reject; return MessageAcceptance::Reject;
} }
@ -718,7 +724,10 @@ impl Libp2pEventHandler {
} }
// verify announced ip address if required // verify announced ip address if required
if !self.config.private_ip_enabled && !self.verify_announced_address(&msg.peer_id, &addr) { if !self.config.private_ip_enabled
&& self.config.check_announced_ip
&& !self.verify_announced_address(&msg.peer_id, &addr)
{
return MessageAcceptance::Reject; return MessageAcceptance::Reject;
} }

View File

@ -263,7 +263,7 @@ impl RouterService {
break; break;
} }
Err(err) => { Err(err) => {
debug!(address = %multiaddr, error = ?err, "Could not connect to peer") debug!(address = %multiaddr, error = ?err, "Could not connect to peer");
} }
}; };
} }
@ -385,8 +385,11 @@ impl RouterService {
async fn on_heartbeat(&mut self) { async fn on_heartbeat(&mut self) {
let expired_peers = self.peers.write().await.expired_peers(); let expired_peers = self.peers.write().await.expired_peers();
metrics::SERVICE_EXPIRED_PEERS.update(expired_peers.len() as u64); let num_expired_peers = expired_peers.len() as u64;
trace!("heartbeat, expired peers = {:?}", expired_peers.len()); metrics::SERVICE_EXPIRED_PEERS.update(num_expired_peers);
if num_expired_peers > 0 {
debug!(%num_expired_peers, "Heartbeat, remove expired peers")
}
let mut num_succeeded = 0; let mut num_succeeded = 0;
let mut num_failed = 0; let mut num_failed = 0;