Skip to content

Commit 3355b84

Browse files
committed
feat(onion_client): add function to set friend's dht pk
1 parent 56e71be commit 3355b84

File tree

1 file changed

+29
-0
lines changed
  • src/toxcore/onion/client

1 file changed

+29
-0
lines changed

src/toxcore/onion/client/mod.rs

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -556,6 +556,15 @@ impl OnionClient {
556556
state.friends.insert(real_pk, OnionFriend::new(real_pk));
557557
}
558558

559+
/// Set friend's DHT `PublicKey` when it gets known somewhere else.
560+
pub fn set_friend_dht_pk(&self, real_pk: PublicKey, dht_pk: PublicKey) {
561+
let mut state = self.state.lock();
562+
563+
if let Some(friend) = state.friends.get_mut(&real_pk) {
564+
friend.dht_pk = Some(dht_pk);
565+
}
566+
}
567+
559568
/// Generic function for sending search and announce requests to close nodes.
560569
fn ping_close_nodes(
561570
close_nodes: &mut Kbucket<OnionNode>,
@@ -1087,6 +1096,26 @@ mod tests {
10871096
assert_eq!(state.friends[&friend_pk].real_pk, friend_pk);
10881097
}
10891098

1099+
#[test]
1100+
fn set_friend_dht_pk() {
1101+
let (dht_pk, dht_sk) = gen_keypair();
1102+
let (real_pk, real_sk) = gen_keypair();
1103+
let (udp_tx, _udp_rx) = mpsc::channel(1);
1104+
let (tcp_incoming_tx, _tcp_incoming_rx) = mpsc::unbounded();
1105+
let dht = DhtServer::new(udp_tx, dht_pk, dht_sk.clone());
1106+
let tcp_connections = TcpConnections::new(dht_pk, dht_sk, tcp_incoming_tx);
1107+
let onion_client = OnionClient::new(dht, tcp_connections, real_sk, real_pk);
1108+
1109+
let (friend_pk, _friend_sk) = gen_keypair();
1110+
onion_client.add_friend(friend_pk);
1111+
1112+
let (friend_dht_pk, _friend_dht_sk) = gen_keypair();
1113+
onion_client.set_friend_dht_pk(friend_pk, friend_dht_pk);
1114+
1115+
let state = onion_client.state.lock();
1116+
assert_eq!(state.friends[&friend_pk].dht_pk, Some(friend_dht_pk));
1117+
}
1118+
10901119
#[test]
10911120
fn handle_announce_response_announced() {
10921121
let (dht_pk, dht_sk) = gen_keypair();

0 commit comments

Comments
 (0)