diff options
Diffstat (limited to 'toxcore/Messenger.c')
-rw-r--r-- | toxcore/Messenger.c | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/toxcore/Messenger.c b/toxcore/Messenger.c index 594fc79a..e092a9f2 100644 --- a/toxcore/Messenger.c +++ b/toxcore/Messenger.c | |||
@@ -2593,12 +2593,12 @@ void do_messenger(Messenger *m, void *userdata) | |||
2593 | if (!m->has_added_relays) { | 2593 | if (!m->has_added_relays) { |
2594 | m->has_added_relays = true; | 2594 | m->has_added_relays = true; |
2595 | 2595 | ||
2596 | int i; | 2596 | for (uint16_t i = 0; i < m->num_loaded_relays; ++i) { |
2597 | |||
2598 | for (i = 0; i < NUM_SAVED_TCP_RELAYS; ++i) { | ||
2599 | add_tcp_relay(m->net_crypto, m->loaded_relays[i].ip_port, m->loaded_relays[i].public_key); | 2597 | add_tcp_relay(m->net_crypto, m->loaded_relays[i].ip_port, m->loaded_relays[i].public_key); |
2600 | } | 2598 | } |
2601 | 2599 | ||
2600 | m->num_loaded_relays = 0; | ||
2601 | |||
2602 | if (m->tcp_server) { | 2602 | if (m->tcp_server) { |
2603 | /* Add self tcp server. */ | 2603 | /* Add self tcp server. */ |
2604 | IP_Port local_ip_port; | 2604 | IP_Port local_ip_port; |
@@ -3035,6 +3035,7 @@ static uint8_t *friends_list_save(const Messenger *m, uint8_t *data) | |||
3035 | temp.info_size = net_htons(m->friendlist[i].info_size); | 3035 | temp.info_size = net_htons(m->friendlist[i].info_size); |
3036 | temp.friendrequest_nospam = m->friendlist[i].friendrequest_nospam; | 3036 | temp.friendrequest_nospam = m->friendlist[i].friendrequest_nospam; |
3037 | } else { | 3037 | } else { |
3038 | temp.status = 3; | ||
3038 | memcpy(temp.name, m->friendlist[i].name, m->friendlist[i].name_length); | 3039 | memcpy(temp.name, m->friendlist[i].name, m->friendlist[i].name_length); |
3039 | temp.name_length = net_htons(m->friendlist[i].name_length); | 3040 | temp.name_length = net_htons(m->friendlist[i].name_length); |
3040 | memcpy(temp.statusmessage, m->friendlist[i].statusmessage, m->friendlist[i].statusmessage_length); | 3041 | memcpy(temp.statusmessage, m->friendlist[i].statusmessage, m->friendlist[i].statusmessage_length); |
@@ -3193,7 +3194,13 @@ static uint8_t *save_tcp_relays(const Messenger *m, uint8_t *data) | |||
3193 | Node_format relays[NUM_SAVED_TCP_RELAYS]; | 3194 | Node_format relays[NUM_SAVED_TCP_RELAYS]; |
3194 | uint8_t *temp_data = data; | 3195 | uint8_t *temp_data = data; |
3195 | data = state_write_section_header(temp_data, MESSENGER_STATE_COOKIE_TYPE, 0, MESSENGER_STATE_TYPE_TCP_RELAY); | 3196 | data = state_write_section_header(temp_data, MESSENGER_STATE_COOKIE_TYPE, 0, MESSENGER_STATE_TYPE_TCP_RELAY); |
3196 | unsigned int num = copy_connected_tcp_relays(m->net_crypto, relays, NUM_SAVED_TCP_RELAYS); | 3197 | uint32_t num = copy_connected_tcp_relays(m->net_crypto, relays, NUM_SAVED_TCP_RELAYS); |
3198 | |||
3199 | if (m->num_loaded_relays > 0) { | ||
3200 | memcpy(relays, m->loaded_relays, sizeof(Node_format) * m->num_loaded_relays); | ||
3201 | num = min_u32(num + m->num_loaded_relays, NUM_SAVED_TCP_RELAYS); | ||
3202 | } | ||
3203 | |||
3197 | int l = pack_nodes(data, NUM_SAVED_TCP_RELAYS * packed_node_size(net_family_tcp_ipv6), relays, num); | 3204 | int l = pack_nodes(data, NUM_SAVED_TCP_RELAYS * packed_node_size(net_family_tcp_ipv6), relays, num); |
3198 | 3205 | ||
3199 | if (l > 0) { | 3206 | if (l > 0) { |
@@ -3208,7 +3215,7 @@ static uint8_t *save_tcp_relays(const Messenger *m, uint8_t *data) | |||
3208 | static State_Load_Status load_tcp_relays(Messenger *m, const uint8_t *data, uint32_t length) | 3215 | static State_Load_Status load_tcp_relays(Messenger *m, const uint8_t *data, uint32_t length) |
3209 | { | 3216 | { |
3210 | if (length != 0) { | 3217 | if (length != 0) { |
3211 | unpack_nodes(m->loaded_relays, NUM_SAVED_TCP_RELAYS, nullptr, data, length, 1); | 3218 | m->num_loaded_relays = unpack_nodes(m->loaded_relays, NUM_SAVED_TCP_RELAYS, nullptr, data, length, 1); |
3212 | m->has_added_relays = false; | 3219 | m->has_added_relays = false; |
3213 | } | 3220 | } |
3214 | 3221 | ||