relay fixes

This commit is contained in:
John Smith
2023-07-12 19:38:35 -04:00
parent 87694f5f4a
commit 714eca1411
3 changed files with 47 additions and 13 deletions

View File

@@ -369,8 +369,8 @@ impl RouteSpecStore {
}
let opt_relay = match node.locked_mut(rti).relay(RoutingDomain::PublicInternet) {
Ok(r) => r,
Err(e) => {
log_rtab!(error "failed to get relay for route node: {}", e);
Err(_) => {
// Not selecting a relay through ourselves
return None;
}
};

View File

@@ -15,6 +15,7 @@ impl RoutingTable {
};
let own_node_info = own_peer_info.signed_node_info().node_info();
let network_class = own_node_info.network_class();
let relay_node_filter = self.make_public_internet_relay_node_filter();
// Get routing domain editor
let mut editor = self.edit_routing_domain(RoutingDomain::PublicInternet);
@@ -28,7 +29,18 @@ impl RoutingTable {
info!("Relay node died, dropping relay {}", relay_node);
editor.clear_relay_node();
false
} else if !own_node_info.requires_relay() {
}
// Relay node no longer can relay
else if relay_node.operate(|_rti, e| !relay_node_filter(e)) {
info!(
"Relay node can no longer relay, dropping relay {}",
relay_node
);
editor.clear_relay_node();
false
}
// Relay node is no longer required
else if !own_node_info.requires_relay() {
info!(
"Relay node no longer required, dropping relay {}",
relay_node