diff --git a/Cargo.lock b/Cargo.lock index c4ad391b..0c7507a5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5872,7 +5872,6 @@ dependencies = [ "oslog", "paranoid-android", "parking_lot 0.11.2", - "parking_lot 0.12.1", "rand 0.7.3", "range-set-blaze", "rust-fsm", diff --git a/external/keyring-manager b/external/keyring-manager index b127b2d3..290b1547 160000 --- a/external/keyring-manager +++ b/external/keyring-manager @@ -1 +1 @@ -Subproject commit b127b2d3c653fea163a776dd58b3798f28aeeee3 +Subproject commit 290b15474663f38b351ac514f457948b05b782bb diff --git a/external/keyvaluedb b/external/keyvaluedb index 0de59504..1430135c 160000 --- a/external/keyvaluedb +++ b/external/keyvaluedb @@ -1 +1 @@ -Subproject commit 0de595047a3c8a22b9550a3ab55105d79e7b030b +Subproject commit 1430135c7e3b1d0176c0b45f64e8c0a9d85d44d0 diff --git a/veilid-core/src/routing_table/routing_domains.rs b/veilid-core/src/routing_table/routing_domains.rs index 3d37737b..7f60cc04 100644 --- a/veilid-core/src/routing_table/routing_domains.rs +++ b/veilid-core/src/routing_table/routing_domains.rs @@ -404,7 +404,7 @@ impl RoutingDomainDetail for PublicInternetRoutingDomainDetail { else if let Some(node_b_relay) = peer_b.signed_node_info().relay_info() { // Note that relay_peer_info could be node_a, in which case a connection already exists - // and we only get here if the connection had dropped, in which case node_a is unreachable until + // and we only get here if the connection had dropped, in which case node_b is unreachable until // it gets a new relay connection up if peer_b.signed_node_info().relay_ids().contains_any(peer_a.node_ids()) { return ContactMethod::Existing; @@ -430,10 +430,12 @@ impl RoutingDomainDetail for PublicInternetRoutingDomainDetail { } // If node A can't reach the node by other means, it may need to use its own relay - if let Some(node_a_relay_id) = peer_a.signed_node_info().relay_ids().get(best_ck) { - // Ensure it's not our relay we're trying to reach - if node_a_relay_id != node_b_id { - return ContactMethod::OutboundRelay(node_a_relay_id); + if peer_a.signed_node_info().node_info().network_class().outbound_wants_relay() { + if let Some(node_a_relay_id) = peer_a.signed_node_info().relay_ids().get(best_ck) { + // Ensure it's not our relay we're trying to reach + if node_a_relay_id != node_b_id { + return ContactMethod::OutboundRelay(node_a_relay_id); + } } }