@@ -264,8 +264,9 @@ struct AnnouncePacketData<'a> {
264
264
}
265
265
266
266
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 {
269
270
let payload = OnionAnnounceRequestPayload {
270
271
ping_id : ping_id. unwrap_or_else ( initial_ping_id) ,
271
272
search_pk : self . search_pk ,
@@ -278,6 +279,14 @@ impl<'a> AnnouncePacketData<'a> {
278
279
& payload
279
280
)
280
281
}
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
+ }
281
290
}
282
291
283
292
/// Onion client state.
@@ -474,7 +483,7 @@ impl OnionClient {
474
483
friend_pk : announce_data. friend_pk ,
475
484
} ) ;
476
485
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) ;
478
487
let onion_request = path. create_onion_request ( node. saddr , InnerOnionRequest :: InnerOnionAnnounceRequest ( inner_announce_request) ) ;
479
488
480
489
futures. push ( send_to ( & self . dht . tx , ( Packet :: OnionRequest0 ( onion_request) , path. nodes [ 0 ] . saddr ) ) ) ;
@@ -658,14 +667,10 @@ impl OnionClient {
658
667
friend_pk,
659
668
} ) ;
660
669
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)
667
673
} ;
668
- let inner_announce_request = announce_packet_data. request ( & node. pk , ping_id, request_id) ;
669
674
let onion_request = path. create_onion_request ( node. saddr , InnerOnionRequest :: InnerOnionAnnounceRequest ( inner_announce_request) ) ;
670
675
671
676
packets. push ( ( Packet :: OnionRequest0 ( onion_request) , path. nodes [ 0 ] . saddr ) ) ;
0 commit comments