Skip to content

Commit 5c1dc1b

Browse files
author
Roman Proskuryakov
authored
Merge pull request #389 from tox-rs/onion_tcp
Add TCP support for onion client
2 parents 9b0fe64 + 3f08607 commit 5c1dc1b

File tree

6 files changed

+550
-255
lines changed

6 files changed

+550
-255
lines changed

src/toxcore/dht/server/mod.rs

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -248,6 +248,13 @@ impl Server {
248248
self.lan_discovery_enabled = enable;
249249
}
250250

251+
/// Check if we have at least one node in good state.
252+
pub fn is_connected(&self) -> bool {
253+
self.close_nodes.read()
254+
.iter()
255+
.any(|node| !node.is_bad())
256+
}
257+
251258
/// Get closest nodes from both close_nodes and friend's close_nodes
252259
fn get_closest_inner(
253260
close_nodes: &Ktree,
@@ -1492,6 +1499,10 @@ mod tests {
14921499
pub fn has_friend(&self, pk: &PublicKey) -> bool {
14931500
self.friends.read().contains_key(pk)
14941501
}
1502+
1503+
pub fn add_node(&self, node: PackedNode) {
1504+
assert!(self.close_nodes.write().try_add(node));
1505+
}
14951506
}
14961507

14971508
fn create_node() -> (Server, PrecomputedKey, PublicKey, SecretKey,
@@ -3737,4 +3748,13 @@ mod tests {
37373748
assert_eq!(nodes.len(), FAKE_FRIENDS_NUMBER - 1);
37383749
assert!(!nodes.contains(&node));
37393750
}
3751+
3752+
#[test]
3753+
fn is_connected() {
3754+
let (alice, _precomp, _bob_pk, _bob_sk, _rx, _addr) = create_node();
3755+
3756+
assert!(!alice.is_connected());
3757+
alice.add_node(PackedNode::new("127.0.0.1:12345".parse().unwrap(), &gen_keypair().0));
3758+
assert!(alice.is_connected());
3759+
}
37403760
}

0 commit comments

Comments
 (0)