diff options
author | irungentoo <irungentoo@gmail.com> | 2013-08-02 10:41:03 -0400 |
---|---|---|
committer | irungentoo <irungentoo@gmail.com> | 2013-08-02 10:41:03 -0400 |
commit | b9176974a84ccf3b3baa8b4519ed9ea6ab75a629 (patch) | |
tree | 32b0a997e3fbf4eb7ee6864550e881c7ade6a021 /core/DHT.c | |
parent | 67efb67f963e66412c4aca38debd8c20af9f7ba8 (diff) | |
parent | 20951dda7dfc0625fcbaccde4ec049ef6f2caeb6 (diff) |
Merge branch 'master' into Jeffail-master
Conflicts:
core/DHT.c
Diffstat (limited to 'core/DHT.c')
-rw-r--r-- | core/DHT.c | 51 |
1 files changed, 32 insertions, 19 deletions
@@ -85,7 +85,7 @@ typedef struct { | |||
85 | uint8_t hole_punching; | 85 | uint8_t hole_punching; |
86 | uint32_t punching_index; | 86 | uint32_t punching_index; |
87 | uint32_t punching_timestamp; | 87 | uint32_t punching_timestamp; |
88 | uint32_t recvNATping_timestamp; | 88 | int64_t recvNATping_timestamp; |
89 | uint64_t NATping_id; | 89 | uint64_t NATping_id; |
90 | uint32_t NATping_timestamp; | 90 | uint32_t NATping_timestamp; |
91 | } Friend; | 91 | } Friend; |
@@ -98,7 +98,7 @@ typedef struct { | |||
98 | typedef struct { | 98 | typedef struct { |
99 | IP_Port ip_port; | 99 | IP_Port ip_port; |
100 | uint64_t ping_id; | 100 | uint64_t ping_id; |
101 | uint32_t timestamp; | 101 | int64_t timestamp; |
102 | } Pinged; | 102 | } Pinged; |
103 | 103 | ||
104 | /*----------------------------------------------------------------------------------*/ | 104 | /*----------------------------------------------------------------------------------*/ |
@@ -145,7 +145,8 @@ int id_closest(uint8_t * client_id, uint8_t * client_id1, uint8_t * client_id2) | |||
145 | */ | 145 | */ |
146 | int client_in_list(Client_data * list, uint32_t length, uint8_t * client_id, IP_Port ip_port) | 146 | int client_in_list(Client_data * list, uint32_t length, uint8_t * client_id, IP_Port ip_port) |
147 | { | 147 | { |
148 | uint32_t i, temp_time = unix_time(); | 148 | uint32_t i; |
149 | int64_t temp_time = unix_time(); | ||
149 | 150 | ||
150 | for(i = 0; i < length; ++i) { | 151 | for(i = 0; i < length; ++i) { |
151 | /*If ip_port is assigned to a different client_id replace it*/ | 152 | /*If ip_port is assigned to a different client_id replace it*/ |
@@ -197,7 +198,8 @@ static int friend_number(uint8_t * client_id) | |||
197 | */ | 198 | */ |
198 | int get_close_nodes(uint8_t * client_id, Node_format * nodes_list) | 199 | int get_close_nodes(uint8_t * client_id, Node_format * nodes_list) |
199 | { | 200 | { |
200 | uint32_t i, j, k, temp_time = unix_time(); | 201 | uint32_t i, j, k; |
202 | int64_t temp_time = unix_time(); | ||
201 | int num_nodes = 0, closest, tout, inlist; | 203 | int num_nodes = 0, closest, tout, inlist; |
202 | 204 | ||
203 | for (i = 0; i < LCLIENT_LIST; ++i) { | 205 | for (i = 0; i < LCLIENT_LIST; ++i) { |
@@ -283,7 +285,7 @@ int replace_bad( Client_data * list, | |||
283 | IP_Port ip_port ) | 285 | IP_Port ip_port ) |
284 | { | 286 | { |
285 | uint32_t i; | 287 | uint32_t i; |
286 | uint32_t temp_time = unix_time(); | 288 | int64_t temp_time = unix_time(); |
287 | for(i = 0; i < length; ++i) { | 289 | for(i = 0; i < length; ++i) { |
288 | /* if node is bad */ | 290 | /* if node is bad */ |
289 | if(list[i].timestamp + BAD_NODE_TIMEOUT < temp_time) { | 291 | if(list[i].timestamp + BAD_NODE_TIMEOUT < temp_time) { |
@@ -308,7 +310,7 @@ int replace_good( Client_data * list, | |||
308 | uint8_t * comp_client_id ) | 310 | uint8_t * comp_client_id ) |
309 | { | 311 | { |
310 | uint32_t i; | 312 | uint32_t i; |
311 | uint32_t temp_time = unix_time(); | 313 | int64_t temp_time = unix_time(); |
312 | 314 | ||
313 | for(i = 0; i < length; ++i) | 315 | for(i = 0; i < length; ++i) |
314 | if(id_closest(comp_client_id, list[i].client_id, client_id) == 2) { | 316 | if(id_closest(comp_client_id, list[i].client_id, client_id) == 2) { |
@@ -371,7 +373,8 @@ void addto_lists(IP_Port ip_port, uint8_t * client_id) | |||
371 | */ | 373 | */ |
372 | void returnedip_ports(IP_Port ip_port, uint8_t * client_id, uint8_t * nodeclient_id) | 374 | void returnedip_ports(IP_Port ip_port, uint8_t * client_id, uint8_t * nodeclient_id) |
373 | { | 375 | { |
374 | uint32_t i, j, temp_time = unix_time(); | 376 | uint32_t i, j; |
377 | int64_t temp_time = unix_time(); | ||
375 | 378 | ||
376 | if (memcmp(client_id, self_public_key, CLIENT_ID_SIZE) == 0) { | 379 | if (memcmp(client_id, self_public_key, CLIENT_ID_SIZE) == 0) { |
377 | for (i = 0; i < LCLIENT_LIST; ++i) { | 380 | for (i = 0; i < LCLIENT_LIST; ++i) { |
@@ -411,8 +414,9 @@ void returnedip_ports(IP_Port ip_port, uint8_t * client_id, uint8_t * nodeclient | |||
411 | */ | 414 | */ |
412 | int is_pinging(IP_Port ip_port, uint64_t ping_id) | 415 | int is_pinging(IP_Port ip_port, uint64_t ping_id) |
413 | { | 416 | { |
414 | uint32_t i, temp_time = unix_time(); | 417 | uint32_t i; |
415 | uint8_t pinging; | 418 | uint8_t pinging; |
419 | int64_t temp_time = unix_time(); | ||
416 | 420 | ||
417 | for (i = 0; i < LPING_ARRAY; ++i ) { | 421 | for (i = 0; i < LPING_ARRAY; ++i ) { |
418 | if ((pings[i].timestamp + PING_TIMEOUT) > temp_time) { | 422 | if ((pings[i].timestamp + PING_TIMEOUT) > temp_time) { |
@@ -434,8 +438,9 @@ int is_pinging(IP_Port ip_port, uint64_t ping_id) | |||
434 | /* Same as last function but for get_node requests. */ | 438 | /* Same as last function but for get_node requests. */ |
435 | int is_gettingnodes(IP_Port ip_port, uint64_t ping_id) | 439 | int is_gettingnodes(IP_Port ip_port, uint64_t ping_id) |
436 | { | 440 | { |
437 | uint32_t i, temp_time = unix_time(); | 441 | uint32_t i; |
438 | uint8_t pinging; | 442 | uint8_t pinging; |
443 | int64_t temp_time = unix_time(); | ||
439 | 444 | ||
440 | for(i = 0; i < LSEND_NODES_ARRAY; ++i ) { | 445 | for(i = 0; i < LSEND_NODES_ARRAY; ++i ) { |
441 | if((send_nodes[i].timestamp + PING_TIMEOUT) > temp_time) { | 446 | if((send_nodes[i].timestamp + PING_TIMEOUT) > temp_time) { |
@@ -462,8 +467,10 @@ int is_gettingnodes(IP_Port ip_port, uint64_t ping_id) | |||
462 | */ | 467 | */ |
463 | uint64_t add_pinging(IP_Port ip_port) | 468 | uint64_t add_pinging(IP_Port ip_port) |
464 | { | 469 | { |
465 | uint32_t i, j, temp_time = unix_time(); | 470 | uint32_t i, j; |
466 | uint64_t ping_id = ((uint64_t)random_int() << 32) + random_int(); | 471 | uint64_t ping_id = ((uint64_t)random_int() << 32) + random_int(); |
472 | int64_t temp_time = unix_time(); | ||
473 | |||
467 | 474 | ||
468 | for(i = 0; i < PING_TIMEOUT; ++i ) { | 475 | for(i = 0; i < PING_TIMEOUT; ++i ) { |
469 | for(j = 0; j < LPING_ARRAY; ++j ) { | 476 | for(j = 0; j < LPING_ARRAY; ++j ) { |
@@ -484,7 +491,7 @@ uint64_t add_gettingnodes(IP_Port ip_port) | |||
484 | { | 491 | { |
485 | uint32_t i, j; | 492 | uint32_t i, j; |
486 | uint64_t ping_id = ((uint64_t)random_int() << 32) + random_int(); | 493 | uint64_t ping_id = ((uint64_t)random_int() << 32) + random_int(); |
487 | uint32_t temp_time = unix_time(); | 494 | int64_t temp_time = unix_time(); |
488 | 495 | ||
489 | for(i = 0; i < PING_TIMEOUT; ++i ) { | 496 | for(i = 0; i < PING_TIMEOUT; ++i ) { |
490 | for(j = 0; j < LSEND_NODES_ARRAY; ++j ) { | 497 | for(j = 0; j < LSEND_NODES_ARRAY; ++j ) { |
@@ -823,7 +830,8 @@ int DHT_delfriend(uint8_t * client_id) | |||
823 | /* TODO: Optimize this. */ | 830 | /* TODO: Optimize this. */ |
824 | IP_Port DHT_getfriendip(uint8_t * client_id) | 831 | IP_Port DHT_getfriendip(uint8_t * client_id) |
825 | { | 832 | { |
826 | uint32_t i, j, temp_time = unix_time(); | 833 | uint32_t i, j; |
834 | int64_t temp_time = unix_time(); | ||
827 | IP_Port empty = {{{0}}, 0}; | 835 | IP_Port empty = {{{0}}, 0}; |
828 | 836 | ||
829 | for (i = 0; i < num_friends; ++i) { | 837 | for (i = 0; i < num_friends; ++i) { |
@@ -849,7 +857,7 @@ IP_Port DHT_getfriendip(uint8_t * client_id) | |||
849 | void doDHTFriends() | 857 | void doDHTFriends() |
850 | { | 858 | { |
851 | uint32_t i, j; | 859 | uint32_t i, j; |
852 | uint32_t temp_time = unix_time(); | 860 | int64_t temp_time = unix_time(); |
853 | uint32_t rand_node; | 861 | uint32_t rand_node; |
854 | uint32_t index[MAX_FRIEND_CLIENTS]; | 862 | uint32_t index[MAX_FRIEND_CLIENTS]; |
855 | 863 | ||
@@ -888,7 +896,7 @@ static uint32_t close_lastgetnodes; | |||
888 | void doClose() | 896 | void doClose() |
889 | { | 897 | { |
890 | uint32_t i; | 898 | uint32_t i; |
891 | uint32_t temp_time = unix_time(); | 899 | int64_t temp_time = unix_time(); |
892 | uint32_t num_nodes = 0; | 900 | uint32_t num_nodes = 0; |
893 | uint32_t rand_node; | 901 | uint32_t rand_node; |
894 | uint32_t index[LCLIENT_LIST]; | 902 | uint32_t index[LCLIENT_LIST]; |
@@ -945,8 +953,9 @@ int route_packet(uint8_t * client_id, uint8_t * packet, uint32_t length) | |||
945 | static int friend_iplist(IP_Port * ip_portlist, uint16_t friend_num) | 953 | static int friend_iplist(IP_Port * ip_portlist, uint16_t friend_num) |
946 | { | 954 | { |
947 | int num_ips = 0; | 955 | int num_ips = 0; |
948 | uint32_t i, temp_time = unix_time(); | 956 | uint32_t i; |
949 | 957 | int64_t temp_time = unix_time(); | |
958 | |||
950 | if (friend_num >= num_friends) | 959 | if (friend_num >= num_friends) |
951 | return -1; | 960 | return -1; |
952 | 961 | ||
@@ -979,7 +988,8 @@ int route_tofriend(uint8_t * friend_id, uint8_t * packet, uint32_t length) | |||
979 | if (num == -1) | 988 | if (num == -1) |
980 | return 0; | 989 | return 0; |
981 | 990 | ||
982 | uint32_t i, sent = 0, temp_time = unix_time(); | 991 | uint32_t i, sent = 0; |
992 | int64_t temp_time = unix_time(); | ||
983 | Friend * friend = &friends_list[num]; | 993 | Friend * friend = &friends_list[num]; |
984 | Client_data * client; | 994 | Client_data * client; |
985 | 995 | ||
@@ -1012,6 +1022,7 @@ int routeone_tofriend(uint8_t * friend_id, uint8_t * packet, uint32_t length) | |||
1012 | IP_Port ip_list[MAX_FRIEND_CLIENTS]; | 1022 | IP_Port ip_list[MAX_FRIEND_CLIENTS]; |
1013 | int n = 0; | 1023 | int n = 0; |
1014 | uint32_t i, temp_time = unix_time(); | 1024 | uint32_t i, temp_time = unix_time(); |
1025 | int64_t temp_time = unix_time(); | ||
1015 | 1026 | ||
1016 | for (i = 0; i < MAX_FRIEND_CLIENTS; ++i) { | 1027 | for (i = 0; i < MAX_FRIEND_CLIENTS; ++i) { |
1017 | client = &friend->client_list[i]; | 1028 | client = &friend->client_list[i]; |
@@ -1184,7 +1195,8 @@ static void punch_holes(IP ip, uint16_t * port_list, uint16_t numports, uint16_t | |||
1184 | 1195 | ||
1185 | static void doNAT() | 1196 | static void doNAT() |
1186 | { | 1197 | { |
1187 | uint32_t i, temp_time = unix_time(); | 1198 | uint32_t i; |
1199 | int64_t temp_time = unix_time(); | ||
1188 | 1200 | ||
1189 | for (i = 0; i < num_friends; ++i) { | 1201 | for (i = 0; i < num_friends; ++i) { |
1190 | IP_Port ip_list[MAX_FRIEND_CLIENTS]; | 1202 | IP_Port ip_list[MAX_FRIEND_CLIENTS]; |
@@ -1279,7 +1291,7 @@ int DHT_load(uint8_t * data, uint32_t size) | |||
1279 | 1291 | ||
1280 | uint32_t i, j; | 1292 | uint32_t i, j; |
1281 | uint16_t temp; | 1293 | uint16_t temp; |
1282 | /* uint32_t temp_time = unix_time(); */ | 1294 | /* int64_t temp_time = unix_time(); */ |
1283 | 1295 | ||
1284 | Client_data * client; | 1296 | Client_data * client; |
1285 | 1297 | ||
@@ -1314,6 +1326,7 @@ int DHT_load(uint8_t * data, uint32_t size) | |||
1314 | int DHT_isconnected() | 1326 | int DHT_isconnected() |
1315 | { | 1327 | { |
1316 | uint32_t i, temp_time = unix_time(); | 1328 | uint32_t i, temp_time = unix_time(); |
1329 | int64_t temp_time = unix_time(); | ||
1317 | 1330 | ||
1318 | for(i = 0; i < LCLIENT_LIST; ++i) { | 1331 | for(i = 0; i < LCLIENT_LIST; ++i) { |
1319 | if(close_clientlist[i].timestamp + BAD_NODE_TIMEOUT > temp_time) | 1332 | if(close_clientlist[i].timestamp + BAD_NODE_TIMEOUT > temp_time) |