summaryrefslogtreecommitdiff
path: root/toxcore/DHT.c
diff options
context:
space:
mode:
authorCoren[m] <Break@Ocean>2013-09-13 08:50:46 +0200
committerCoren[m] <Break@Ocean>2013-09-13 08:50:46 +0200
commitec3734fc5d0f0d81a5220cf16ad6ef8eb5f06c7c (patch)
tree6ba8d5c042ba6d6ecd4edc7776b1bd37f6932c80 /toxcore/DHT.c
parentcdd5878bc4451c7411b04e7ba4911fd5eaffcdf9 (diff)
TOX_ENABLE_IPV6 is now #define'd per default. Added some logging and error messages.
Diffstat (limited to 'toxcore/DHT.c')
-rw-r--r--toxcore/DHT.c22
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 */
1460int DHT_load(DHT *dht, uint8_t *data, uint32_t size) 1461int 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,