diff options
Diffstat (limited to 'toxcore/DHT.c')
-rw-r--r-- | toxcore/DHT.c | 22 |
1 files changed, 11 insertions, 11 deletions
diff --git a/toxcore/DHT.c b/toxcore/DHT.c index a5f0c1ab..0b212d5b 100644 --- a/toxcore/DHT.c +++ b/toxcore/DHT.c | |||
@@ -31,6 +31,7 @@ | |||
31 | #include "network.h" | 31 | #include "network.h" |
32 | #include "ping.h" | 32 | #include "ping.h" |
33 | #include "misc_tools.h" | 33 | #include "misc_tools.h" |
34 | #include "Messenger.h" | ||
34 | 35 | ||
35 | /* The number of seconds for a non responsive node to become bad. */ | 36 | /* The number of seconds for a non responsive node to become bad. */ |
36 | #define BAD_NODE_TIMEOUT 70 | 37 | #define BAD_NODE_TIMEOUT 70 |
@@ -1459,24 +1460,24 @@ void DHT_save(DHT *dht, uint8_t *data) | |||
1459 | */ | 1460 | */ |
1460 | int DHT_load(DHT *dht, uint8_t *data, uint32_t size) | 1461 | int DHT_load(DHT *dht, uint8_t *data, uint32_t size) |
1461 | { | 1462 | { |
1462 | if (size < sizeof(dht->close_clientlist)) | 1463 | if (size < sizeof(dht->close_clientlist)) { |
1464 | fprintf(stderr, "DHT_load: Expected at least %u bytes, got %u.\n", sizeof(dht->close_clientlist), size); | ||
1463 | return -1; | 1465 | return -1; |
1466 | } | ||
1464 | 1467 | ||
1465 | if ((size - sizeof(dht->close_clientlist)) % sizeof(DHT_Friend) != 0) | 1468 | uint32_t friendlistsize = size - sizeof(dht->close_clientlist); |
1469 | if (friendlistsize % sizeof(DHT_Friend) != 0) { | ||
1470 | fprintf(stderr, "DHT_load: Expected a multiple of %u, got %u.\n", sizeof(DHT_Friend), friendlistsize); | ||
1466 | return -1; | 1471 | return -1; |
1472 | } | ||
1467 | 1473 | ||
1468 | uint32_t i, j; | 1474 | uint32_t i, j; |
1469 | uint16_t temp; | ||
1470 | /* uint64_t temp_time = unix_time(); */ | ||
1471 | |||
1472 | Client_data *client; | 1475 | Client_data *client; |
1473 | 1476 | uint16_t friends_num = friendlistsize / sizeof(DHT_Friend); | |
1474 | temp = (size - sizeof(dht->close_clientlist)) / sizeof(DHT_Friend); | 1477 | if (friends_num != 0) { |
1475 | |||
1476 | if (temp != 0) { | ||
1477 | DHT_Friend *tempfriends_list = (DHT_Friend *)(data + sizeof(dht->close_clientlist)); | 1478 | DHT_Friend *tempfriends_list = (DHT_Friend *)(data + sizeof(dht->close_clientlist)); |
1478 | 1479 | ||
1479 | for (i = 0; i < temp; ++i) { | 1480 | for (i = 0; i < friends_num; ++i) { |
1480 | DHT_addfriend(dht, tempfriends_list[i].client_id); | 1481 | DHT_addfriend(dht, tempfriends_list[i].client_id); |
1481 | 1482 | ||
1482 | for (j = 0; j < MAX_FRIEND_CLIENTS; ++j) { | 1483 | for (j = 0; j < MAX_FRIEND_CLIENTS; ++j) { |
@@ -1489,7 +1490,6 @@ int DHT_load(DHT *dht, uint8_t *data, uint32_t size) | |||
1489 | } | 1490 | } |
1490 | 1491 | ||
1491 | Client_data *tempclose_clientlist = (Client_data *)data; | 1492 | Client_data *tempclose_clientlist = (Client_data *)data; |
1492 | |||
1493 | for (i = 0; i < LCLIENT_LIST; ++i) { | 1493 | for (i = 0; i < LCLIENT_LIST; ++i) { |
1494 | if (tempclose_clientlist[i].timestamp != 0) | 1494 | if (tempclose_clientlist[i].timestamp != 0) |
1495 | DHT_bootstrap(dht, tempclose_clientlist[i].ip_port, | 1495 | DHT_bootstrap(dht, tempclose_clientlist[i].ip_port, |