Skip to content

Commit 6bff3b8

Browse files
committed
refactor(onion_client): add functions to create announce and search requests
1 parent bb5886f commit 6bff3b8

File tree

1 file changed

+15
-10
lines changed
  • src/toxcore/onion/client

1 file changed

+15
-10
lines changed

src/toxcore/onion/client/mod.rs

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -264,8 +264,9 @@ struct AnnouncePacketData<'a> {
264264
}
265265

266266
impl<'a> AnnouncePacketData<'a> {
267-
/// Create `InnerOnionAnnounceRequest`.
268-
pub fn request(&self, node_pk: &PublicKey, ping_id: Option<sha256::Digest>, request_id: u64) -> InnerOnionAnnounceRequest {
267+
/// Create `InnerOnionAnnounceRequest`. The request is a search request if
268+
/// pind_id is 0 and an announce request otherwise.
269+
fn request(&self, node_pk: &PublicKey, ping_id: Option<sha256::Digest>, request_id: u64) -> InnerOnionAnnounceRequest {
269270
let payload = OnionAnnounceRequestPayload {
270271
ping_id: ping_id.unwrap_or_else(initial_ping_id),
271272
search_pk: self.search_pk,
@@ -278,6 +279,14 @@ impl<'a> AnnouncePacketData<'a> {
278279
&payload
279280
)
280281
}
282+
/// Create `InnerOnionAnnounceRequest` for a search request.
283+
pub fn search_request(&self, node_pk: &PublicKey, request_id: u64) -> InnerOnionAnnounceRequest {
284+
self.request(node_pk, None, request_id)
285+
}
286+
/// Create `InnerOnionAnnounceRequest` for an announce request.
287+
pub fn announce_request(&self, node_pk: &PublicKey, ping_id: sha256::Digest, request_id: u64) -> InnerOnionAnnounceRequest {
288+
self.request(node_pk, Some(ping_id), request_id)
289+
}
281290
}
282291

283292
/// Onion client state.
@@ -474,7 +483,7 @@ impl OnionClient {
474483
friend_pk: announce_data.friend_pk,
475484
});
476485

477-
let inner_announce_request = announce_packet_data.request(&node.pk, None, request_id);
486+
let inner_announce_request = announce_packet_data.search_request(&node.pk, request_id);
478487
let onion_request = path.create_onion_request(node.saddr, InnerOnionRequest::InnerOnionAnnounceRequest(inner_announce_request));
479488

480489
futures.push(send_to(&self.dht.tx, (Packet::OnionRequest0(onion_request), path.nodes[0].saddr)));
@@ -658,14 +667,10 @@ impl OnionClient {
658667
friend_pk,
659668
});
660669

661-
// the request is a search request if pind_id is 0 and an
662-
// announce request otherwise
663-
let ping_id = if friend_pk.is_some() {
664-
None
665-
} else {
666-
node.ping_id
670+
let inner_announce_request = match node.ping_id {
671+
Some(ping_id) if friend_pk.is_none() => announce_packet_data.announce_request(&node.pk, ping_id, request_id),
672+
_ => announce_packet_data.search_request(&node.pk, request_id)
667673
};
668-
let inner_announce_request = announce_packet_data.request(&node.pk, ping_id, request_id);
669674
let onion_request = path.create_onion_request(node.saddr, InnerOnionRequest::InnerOnionAnnounceRequest(inner_announce_request));
670675

671676
packets.push((Packet::OnionRequest0(onion_request), path.nodes[0].saddr));

0 commit comments

Comments
 (0)