@@ -781,10 +781,11 @@ bool add_to_list(
781781 * helper for `get_close_nodes()`. argument list is a monster :D
782782 */
783783non_null ()
784- static void get_close_nodes_inner (uint64_t cur_time , const uint8_t * public_key , Node_format * nodes_list ,
785- Family sa_family , const Client_data * client_list , uint32_t client_list_length ,
786- uint32_t * num_nodes_ptr , bool is_lan ,
787- bool want_announce )
784+ static void get_close_nodes_inner (
785+ uint64_t cur_time , const uint8_t * public_key ,
786+ Node_format * nodes_list , uint32_t * num_nodes_ptr ,
787+ Family sa_family , const Client_data * client_list , uint32_t client_list_length ,
788+ bool is_lan , bool want_announce )
788789{
789790 if (!net_family_is_ipv4 (sa_family ) && !net_family_is_ipv6 (sa_family ) && !net_family_is_unspec (sa_family )) {
790791 return ;
@@ -851,28 +852,44 @@ static void get_close_nodes_inner(uint64_t cur_time, const uint8_t *public_key,
851852 * want_announce: return only nodes which implement the dht announcements protocol.
852853 */
853854non_null ()
854- static int get_somewhat_close_nodes (const DHT * dht , const uint8_t * public_key , Node_format * nodes_list ,
855- Family sa_family , bool is_lan , bool want_announce )
855+ static int get_somewhat_close_nodes (
856+ uint64_t cur_time , const uint8_t * public_key , Node_format * nodes_list ,
857+ Family sa_family , const Client_data * close_clientlist ,
858+ const DHT_Friend * friends_list , uint16_t friends_list_size ,
859+ bool is_lan , bool want_announce )
856860{
861+ memset (nodes_list , 0 , MAX_SENT_NODES * sizeof (Node_format ));
862+
857863 uint32_t num_nodes = 0 ;
858- get_close_nodes_inner (dht -> cur_time , public_key , nodes_list , sa_family ,
859- dht -> close_clientlist , LCLIENT_LIST , & num_nodes , is_lan , want_announce );
864+ get_close_nodes_inner (
865+ cur_time , public_key ,
866+ nodes_list , & num_nodes ,
867+ sa_family , close_clientlist , LCLIENT_LIST ,
868+ is_lan , want_announce );
860869
861- for (uint32_t i = 0 ; i < dht -> num_friends ; ++ i ) {
862- get_close_nodes_inner (dht -> cur_time , public_key , nodes_list , sa_family ,
863- dht -> friends_list [i ].client_list , MAX_FRIEND_CLIENTS ,
864- & num_nodes , is_lan , want_announce );
870+ for (uint16_t i = 0 ; i < friends_list_size ; ++ i ) {
871+ const DHT_Friend * dht_friend = & friends_list [i ];
872+
873+ get_close_nodes_inner (
874+ cur_time , public_key ,
875+ nodes_list , & num_nodes ,
876+ sa_family , dht_friend -> client_list , MAX_FRIEND_CLIENTS ,
877+ is_lan , want_announce );
865878 }
866879
867880 return num_nodes ;
868881}
869882
870- int get_close_nodes (const DHT * dht , const uint8_t * public_key , Node_format * nodes_list , Family sa_family ,
871- bool is_lan , bool want_announce )
883+ int get_close_nodes (
884+ const DHT * dht , const uint8_t * public_key ,
885+ Node_format * nodes_list , Family sa_family ,
886+ bool is_lan , bool want_announce )
872887{
873- memset (nodes_list , 0 , MAX_SENT_NODES * sizeof (Node_format ));
874- return get_somewhat_close_nodes (dht , public_key , nodes_list , sa_family ,
875- is_lan , want_announce );
888+ return get_somewhat_close_nodes (
889+ dht -> cur_time , public_key , nodes_list ,
890+ sa_family , dht -> close_clientlist ,
891+ dht -> friends_list , dht -> num_friends ,
892+ is_lan , want_announce );
876893}
877894
878895typedef struct DHT_Cmp_Data {
0 commit comments