set correct route cost for peers relayed by public server (#279)

This commit is contained in:
Sijie.Sun
2024-08-25 12:27:00 +08:00
committed by GitHub
parent 54c6418f97
commit 5833541a6e

View File

@@ -114,10 +114,18 @@ pub fn list_peer_route_pair(peers: Vec<PeerInfo>, routes: Vec<Route>) -> Vec<Pee
for route in routes.iter() {
let peer = peers.iter().find(|peer| peer.peer_id == route.peer_id);
pairs.push(PeerRoutePair {
let has_tunnel = peer.map(|p| !p.conns.is_empty()).unwrap_or(false);
let mut pair = PeerRoutePair {
route: route.clone(),
peer: peer.cloned(),
});
};
// it is relayed by public server, adjust the cost
if !has_tunnel && pair.route.cost == 1 {
pair.route.cost = 2;
}
pairs.push(pair);
}
pairs