diff options
author | zugz (tox) <mbays+tox@sdf.org> | 2018-09-25 21:37:21 +0200 |
---|---|---|
committer | zugz (tox) <mbays+tox@sdf.org> | 2018-10-11 00:21:39 +0200 |
commit | 4dd86f1f29886772cf19d12acbd8cd7b35fb1d07 (patch) | |
tree | d7e909b448a7b24c45b6b3a5b32405473fd59ec2 /toxcore/DHT.c | |
parent | 605dfe882c52bfad4dee9678a69e4b816d93431d (diff) |
ensure save data unchanged after save and load
Diffstat (limited to 'toxcore/DHT.c')
-rw-r--r-- | toxcore/DHT.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/toxcore/DHT.c b/toxcore/DHT.c index 1eebb0c7..8208052d 100644 --- a/toxcore/DHT.c +++ b/toxcore/DHT.c | |||
@@ -2803,6 +2803,11 @@ uint32_t dht_size(const DHT *dht) | |||
2803 | uint32_t numv4 = 0; | 2803 | uint32_t numv4 = 0; |
2804 | uint32_t numv6 = 0; | 2804 | uint32_t numv6 = 0; |
2805 | 2805 | ||
2806 | for (uint32_t i = 0; i < dht->loaded_num_nodes; ++i) { | ||
2807 | numv4 += net_family_is_ipv4(dht->loaded_nodes_list[i].ip_port.ip.family); | ||
2808 | numv6 += net_family_is_ipv6(dht->loaded_nodes_list[i].ip_port.ip.family); | ||
2809 | } | ||
2810 | |||
2806 | for (uint32_t i = 0; i < LCLIENT_LIST; ++i) { | 2811 | for (uint32_t i = 0; i < LCLIENT_LIST; ++i) { |
2807 | numv4 += (dht->close_clientlist[i].assoc4.timestamp != 0); | 2812 | numv4 += (dht->close_clientlist[i].assoc4.timestamp != 0); |
2808 | numv6 += (dht->close_clientlist[i].assoc6.timestamp != 0); | 2813 | numv6 += (dht->close_clientlist[i].assoc6.timestamp != 0); |
@@ -2838,6 +2843,11 @@ void dht_save(const DHT *dht, uint8_t *data) | |||
2838 | 2843 | ||
2839 | uint32_t num = 0; | 2844 | uint32_t num = 0; |
2840 | 2845 | ||
2846 | if (dht->loaded_num_nodes > 0) { | ||
2847 | memcpy(clients, dht->loaded_nodes_list, sizeof(Node_format) * dht->loaded_num_nodes); | ||
2848 | num += dht->loaded_num_nodes; | ||
2849 | } | ||
2850 | |||
2841 | for (uint32_t i = 0; i < LCLIENT_LIST; ++i) { | 2851 | for (uint32_t i = 0; i < LCLIENT_LIST; ++i) { |
2842 | if (dht->close_clientlist[i].assoc4.timestamp != 0) { | 2852 | if (dht->close_clientlist[i].assoc4.timestamp != 0) { |
2843 | memcpy(clients[num].public_key, dht->close_clientlist[i].public_key, CRYPTO_PUBLIC_KEY_SIZE); | 2853 | memcpy(clients[num].public_key, dht->close_clientlist[i].public_key, CRYPTO_PUBLIC_KEY_SIZE); |