summaryrefslogtreecommitdiff
path: root/core/DHT.c
diff options
context:
space:
mode:
authorirungentoo <irungentoo@gmail.com>2013-08-02 10:41:03 -0400
committerirungentoo <irungentoo@gmail.com>2013-08-02 10:41:03 -0400
commitb9176974a84ccf3b3baa8b4519ed9ea6ab75a629 (patch)
tree32b0a997e3fbf4eb7ee6864550e881c7ade6a021 /core/DHT.c
parent67efb67f963e66412c4aca38debd8c20af9f7ba8 (diff)
parent20951dda7dfc0625fcbaccde4ec049ef6f2caeb6 (diff)
Merge branch 'master' into Jeffail-master
Conflicts: core/DHT.c
Diffstat (limited to 'core/DHT.c')
-rw-r--r--core/DHT.c51
1 files changed, 32 insertions, 19 deletions
diff --git a/core/DHT.c b/core/DHT.c
index 5a362ecc..f779ef18 100644
--- a/core/DHT.c
+++ b/core/DHT.c
@@ -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 {
98typedef struct { 98typedef 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 */
146int client_in_list(Client_data * list, uint32_t length, uint8_t * client_id, IP_Port ip_port) 146int 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 */
198int get_close_nodes(uint8_t * client_id, Node_format * nodes_list) 199int 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 */
372void returnedip_ports(IP_Port ip_port, uint8_t * client_id, uint8_t * nodeclient_id) 374void 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 */
412int is_pinging(IP_Port ip_port, uint64_t ping_id) 415int 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. */
435int is_gettingnodes(IP_Port ip_port, uint64_t ping_id) 439int 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 */
463uint64_t add_pinging(IP_Port ip_port) 468uint64_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. */
824IP_Port DHT_getfriendip(uint8_t * client_id) 831IP_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)
849void doDHTFriends() 857void 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;
888void doClose() 896void 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)
945static int friend_iplist(IP_Port * ip_portlist, uint16_t friend_num) 953static 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
1185static void doNAT() 1196static 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)
1314int DHT_isconnected() 1326int 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)