5656#define KEYS_TIMEOUT 600
5757
5858typedef struct DHT_Friend_Callback {
59- dht_ip_cb * ip_callback ;
60- void * data ;
59+ dht_ip_cb * _Nullable ip_callback ;
60+ void * _Nullable data ;
6161 int32_t number ;
6262} DHT_Friend_Callback ;
6363
@@ -87,17 +87,17 @@ const Node_format empty_node_format = {{0}};
8787static_assert (sizeof (empty_dht_friend .lock_flags ) * 8 == DHT_FRIEND_MAX_LOCKS , "Bitfield size and number of locks don't match" );
8888
8989typedef struct Cryptopacket_Handler {
90- cryptopacket_handler_cb * function ;
91- void * object ;
90+ cryptopacket_handler_cb * _Nullable function ;
91+ void * _Nullable object ;
9292} Cryptopacket_Handler ;
9393
9494struct DHT {
95- const Logger * log ;
96- const Network * ns ;
97- Mono_Time * mono_time ;
98- const Memory * mem ;
99- const Random * rng ;
100- Networking_Core * net ;
95+ const Logger * _Nonnull log ;
96+ const Network * _Nonnull ns ;
97+ Mono_Time * _Nonnull mono_time ;
98+ const Memory * _Nonnull mem ;
99+ const Random * _Nonnull rng ;
100+ Networking_Core * _Nonnull net ;
101101
102102 bool hole_punching_enabled ;
103103 bool lan_discovery_enabled ;
@@ -110,26 +110,26 @@ struct DHT {
110110 uint8_t self_public_key [CRYPTO_PUBLIC_KEY_SIZE ];
111111 uint8_t self_secret_key [CRYPTO_SECRET_KEY_SIZE ];
112112
113- DHT_Friend * friends_list ;
113+ DHT_Friend * _Nullable friends_list ;
114114 uint16_t num_friends ;
115115
116- Node_format * loaded_nodes_list ;
116+ Node_format * _Nullable loaded_nodes_list ;
117117 uint32_t loaded_num_nodes ;
118118 unsigned int loaded_nodes_index ;
119119
120- Shared_Key_Cache * shared_keys_recv ;
121- Shared_Key_Cache * shared_keys_sent ;
120+ Shared_Key_Cache * _Nonnull shared_keys_recv ;
121+ Shared_Key_Cache * _Nonnull shared_keys_sent ;
122122
123- struct Ping * ping ;
124- Ping_Array * dht_ping_array ;
123+ struct Ping * _Nonnull ping ;
124+ Ping_Array * _Nonnull dht_ping_array ;
125125 uint64_t cur_time ;
126126
127127 Cryptopacket_Handler cryptopackethandlers [256 ];
128128
129129 Node_format to_bootstrap [MAX_CLOSE_TO_BOOTSTRAP_NODES ];
130130 unsigned int num_to_bootstrap ;
131131
132- dht_nodes_response_cb * nodes_response_callback ;
132+ dht_nodes_response_cb * _Nullable nodes_response_callback ;
133133};
134134
135135const uint8_t * dht_friend_public_key (const DHT_Friend * dht_friend )
@@ -732,7 +732,7 @@ int get_close_nodes(
732732 return get_somewhat_close_nodes (
733733 dht -> cur_time , public_key , nodes_list ,
734734 sa_family , dht -> close_clientlist ,
735- dht -> friends_list , dht -> num_friends ,
735+ ( const DHT_Friend * _Nonnull) dht -> friends_list , dht -> num_friends ,
736736 is_lan , want_announce );
737737}
738738
@@ -847,9 +847,9 @@ static bool store_node_ok(const Client_data *_Nonnull client, uint64_t cur_time,
847847}
848848
849849typedef struct Client_data_Cmp {
850- const Memory * mem ;
850+ const Memory * _Nonnull mem ;
851851 uint64_t cur_time ;
852- const uint8_t * comp_public_key ;
852+ const uint8_t * _Nonnull comp_public_key ;
853853} Client_data_Cmp ;
854854
855855static int client_data_cmp (const Client_data_Cmp * _Nonnull cmp , const Client_data * _Nonnull entry1 , const Client_data * _Nonnull entry2 )
@@ -2507,14 +2507,16 @@ DHT *new_dht(const Logger *log, const Memory *mem, const Random *rng, const Netw
25072507 dht -> hole_punching_enabled = hole_punching_enabled ;
25082508 dht -> lan_discovery_enabled = lan_discovery_enabled ;
25092509
2510- dht -> ping = ping_new (mem , mono_time , rng , dht , net );
2510+ struct Ping * temp_ping = ping_new (mem , mono_time , rng , dht , net );
25112511
2512- if (dht -> ping == nullptr ) {
2512+ if (temp_ping == nullptr ) {
25132513 LOGGER_ERROR (log , "failed to initialise ping" );
25142514 kill_dht (dht );
25152515 return nullptr ;
25162516 }
25172517
2518+ dht -> ping = temp_ping ;
2519+
25182520 networking_registerhandler (dht -> net , NET_PACKET_NODES_REQUEST , & handle_nodes_request , dht );
25192521 networking_registerhandler (dht -> net , NET_PACKET_NODES_RESPONSE , & handle_nodes_response , dht );
25202522 networking_registerhandler (dht -> net , NET_PACKET_CRYPTO , & cryptopacket_handle , dht );
@@ -2527,23 +2529,36 @@ DHT *new_dht(const Logger *log, const Memory *mem, const Random *rng, const Netw
25272529
25282530 crypto_new_keypair (rng , dht -> self_public_key , dht -> self_secret_key );
25292531
2530- dht -> shared_keys_recv = shared_key_cache_new (log , mono_time , mem , dht -> self_secret_key , KEYS_TIMEOUT , MAX_KEYS_PER_SLOT );
2531- dht -> shared_keys_sent = shared_key_cache_new (log , mono_time , mem , dht -> self_secret_key , KEYS_TIMEOUT , MAX_KEYS_PER_SLOT );
2532+ Shared_Key_Cache * const temp_shared_keys_recv = shared_key_cache_new (log , mono_time , mem , dht -> self_secret_key , KEYS_TIMEOUT , MAX_KEYS_PER_SLOT );
2533+
2534+ if (temp_shared_keys_recv == nullptr ) {
2535+ LOGGER_ERROR (log , "failed to initialise shared key cache" );
2536+ kill_dht (dht );
2537+ return nullptr ;
2538+ }
2539+
2540+ dht -> shared_keys_recv = temp_shared_keys_recv ;
2541+
2542+ Shared_Key_Cache * const temp_shared_keys_sent = shared_key_cache_new (log , mono_time , mem , dht -> self_secret_key , KEYS_TIMEOUT , MAX_KEYS_PER_SLOT );
25322543
2533- if (dht -> shared_keys_recv == nullptr || dht -> shared_keys_sent == nullptr ) {
2544+ if (temp_shared_keys_sent == nullptr ) {
25342545 LOGGER_ERROR (log , "failed to initialise shared key cache" );
25352546 kill_dht (dht );
25362547 return nullptr ;
25372548 }
25382549
2539- dht -> dht_ping_array = ping_array_new ( mem , DHT_PING_ARRAY_SIZE , PING_TIMEOUT ) ;
2550+ dht -> shared_keys_sent = temp_shared_keys_sent ;
25402551
2541- if (dht -> dht_ping_array == nullptr ) {
2552+ Ping_Array * const temp_ping_array = ping_array_new (mem , DHT_PING_ARRAY_SIZE , PING_TIMEOUT );
2553+
2554+ if (temp_ping_array == nullptr ) {
25422555 LOGGER_ERROR (log , "failed to initialise ping array" );
25432556 kill_dht (dht );
25442557 return nullptr ;
25452558 }
25462559
2560+ dht -> dht_ping_array = temp_ping_array ;
2561+
25472562 for (uint32_t i = 0 ; i < DHT_FAKE_FRIEND_NUMBER ; ++ i ) {
25482563 uint8_t random_public_key_bytes [CRYPTO_PUBLIC_KEY_SIZE ];
25492564 uint8_t random_secret_key_bytes [CRYPTO_SECRET_KEY_SIZE ];
@@ -2598,7 +2613,7 @@ void kill_dht(DHT *dht)
25982613 networking_registerhandler (dht -> net , NET_PACKET_NODES_RESPONSE , nullptr , nullptr );
25992614 networking_registerhandler (dht -> net , NET_PACKET_CRYPTO , nullptr , nullptr );
26002615 networking_registerhandler (dht -> net , NET_PACKET_LAN_DISCOVERY , nullptr , nullptr );
2601- cryptopacket_registerhandler (dht , CRYPTO_PACKET_NAT_PING , nullptr , nullptr );
2616+ cryptopacket_registerhandler (( DHT * _Nonnull) dht , CRYPTO_PACKET_NAT_PING , nullptr , nullptr );
26022617
26032618 shared_key_cache_free (dht -> shared_keys_recv );
26042619 shared_key_cache_free (dht -> shared_keys_sent );
0 commit comments