nicer avoid connections to self loop in outbound_session

This commit is contained in:
narodnik
2021-02-24 17:10:53 +01:00
parent 93f4804724
commit ee82ed9f70

View File

@@ -95,24 +95,33 @@ impl OutboundSession {
let inbound_addr = self.p2p().settings().inbound;
loop {
match hosts.load_single().await {
Some(addr) => match inbound_addr {
Some(inbound_addr) => {
if inbound_addr != addr {
return Ok(addr);
}
}
None => {
return Ok(addr);
}
},
None => {
error!(
"Hosts address pool is empty. Closing connect slot #{}",
slot_number
);
return Err(NetError::ServiceStopped);
}
let addr = hosts.load_single().await;
if addr.is_none() {
error!(
"Hosts address pool is empty. Closing connect slot #{}",
slot_number
);
return Err(NetError::ServiceStopped);
}
let addr = addr.unwrap();
if Self::addr_is_inbound(&addr, &inbound_addr) {
continue;
}
return Ok(addr);
}
}
fn addr_is_inbound(addr: &SocketAddr, inbound_addr: &Option<SocketAddr>) -> bool {
match inbound_addr {
Some(inbound_addr) => {
inbound_addr == addr
}
// No inbound listening address configured
None => {
false
}
}
}