From 27369ac76278aace29b52eb5523af80f3d9a1880 Mon Sep 17 00:00:00 2001 From: saneki Date: Fri, 12 Sep 2014 12:21:17 -0500 Subject: Removed tox_connect, initial connections are made on first tox_do --- toxcore/DHT.c | 7 +++++++ toxcore/DHT.h | 1 + toxcore/Messenger.c | 31 +++++++++++-------------------- toxcore/Messenger.h | 10 +++------- toxcore/tox.c | 7 ------- toxcore/tox.h | 7 ------- 6 files changed, 22 insertions(+), 41 deletions(-) diff --git a/toxcore/DHT.c b/toxcore/DHT.c index 5041cc4e..be675b26 100644 --- a/toxcore/DHT.c +++ b/toxcore/DHT.c @@ -2229,6 +2229,13 @@ DHT *new_DHT(Networking_Core *net) void do_DHT(DHT *dht) { + // Load friends/clients if first call to do_DHT + if(dht->has_loaded_friends_clients == 0) + { + dht->has_loaded_friends_clients = 1; + DHT_connect_after_load(dht); + } + unix_time_update(); if (dht->last_run == unix_time()) { diff --git a/toxcore/DHT.h b/toxcore/DHT.h index bbba6209..4beda37e 100644 --- a/toxcore/DHT.h +++ b/toxcore/DHT.h @@ -202,6 +202,7 @@ typedef struct { // Used after loading of file (tox_load), but no longer needed after connect (tox_connect) // Unsure if friends_list and num_friends could just be used instead? + int has_loaded_friends_clients; // Whether or not we have loaded on the first do_DHT DHT_Friend *loaded_friends_list; uint32_t loaded_num_friends; Client_data *loaded_clients_list; diff --git a/toxcore/Messenger.c b/toxcore/Messenger.c index a6bfbc8a..5dbed346 100644 --- a/toxcore/Messenger.c +++ b/toxcore/Messenger.c @@ -2408,6 +2408,17 @@ uint32_t messenger_run_interval(Messenger *m) /* The main loop that needs to be run at least 20 times per second. */ void do_messenger(Messenger *m) { + // Add the TCP relays, but only if this is the first time calling do_messenger + if(m->has_added_relays == 0) + { + m->has_added_relays = 1; + + int i; + for (i = 0; i < NUM_SAVED_TCP_RELAYS; ++i) { + add_tcp_relay(m->net_crypto, m->loaded_relays[i].ip_port, m->loaded_relays[i].client_id); + } + } + unix_time_update(); if (!m->options.udp_disabled) { @@ -2554,7 +2565,6 @@ void do_messenger(Messenger *m) #define MESSENGER_STATE_TYPE_PATH_NODE 11 #define SAVED_FRIEND_REQUEST_SIZE 1024 -#define NUM_SAVED_TCP_RELAYS 8 #define NUM_SAVED_PATH_NODES 8 struct SAVED_FRIEND { uint8_t status; @@ -2859,25 +2869,6 @@ int messenger_load(Messenger *m, const uint8_t *data, uint32_t length) return -1; } -/* Connect after loading messenger from file */ -int messenger_connect(Messenger *m) -{ - int i; - - if(m == NULL) - return -1; - - DHT *dht = m->dht; - if(DHT_connect_after_load(dht) == -1) - return -1; - - for (i = 0; i < NUM_SAVED_TCP_RELAYS; ++i) { - add_tcp_relay(m->net_crypto, m->loaded_relays[i].ip_port, m->loaded_relays[i].client_id); - } - - return 0; -} - /* Return the number of friends in the instance m. * You should use this to determine how much memory to allocate * for copy_friendlist. */ diff --git a/toxcore/Messenger.h b/toxcore/Messenger.h index ee3c3fa5..c3ae686a 100644 --- a/toxcore/Messenger.h +++ b/toxcore/Messenger.h @@ -189,7 +189,7 @@ typedef struct { } lossless_packethandlers[PACKET_ID_LOSSLESS_RANGE_SIZE]; } Friend; - +#define NUM_SAVED_TCP_RELAYS 8 typedef struct Messenger { Networking_Core *net; @@ -219,9 +219,8 @@ typedef struct Messenger { uint64_t last_LANdiscovery; - // Relays loaded from config - // 8 should be NUM_SAVED_TCP_RELAYS but it is defined in c file - Node_format loaded_relays[8]; + uint8_t has_added_relays; // If the first connection has occurred in do_messenger + Node_format loaded_relays[NUM_SAVED_TCP_RELAYS]; // Relays loaded from config void (*friend_message)(struct Messenger *m, int32_t, const uint8_t *, uint16_t, void *); void *friend_message_userdata; @@ -780,9 +779,6 @@ void messenger_save(const Messenger *m, uint8_t *data); /* Load the messenger from data of size length. */ int messenger_load(Messenger *m, const uint8_t *data, uint32_t length); -/* Connect after loading messenger from file */ -int messenger_connect(Messenger *m); - /* Return the number of friends in the instance m. * You should use this to determine how much memory to allocate * for copy_friendlist. */ diff --git a/toxcore/tox.c b/toxcore/tox.c index 73bbe1c6..b2aadd39 100644 --- a/toxcore/tox.c +++ b/toxcore/tox.c @@ -928,10 +928,3 @@ int tox_load(Tox *tox, const uint8_t *data, uint32_t length) Messenger *m = tox; return messenger_load(m, data, length); } - -/* Connect after loading the messenger from file */ -int tox_connect(Tox *tox) -{ - Messenger *m = tox; - return messenger_connect(m); -} diff --git a/toxcore/tox.h b/toxcore/tox.h index 8a564e6b..1f251085 100644 --- a/toxcore/tox.h +++ b/toxcore/tox.h @@ -723,13 +723,6 @@ void tox_save(const Tox *tox, uint8_t *data); */ int tox_load(Tox *tox, const uint8_t *data, uint32_t length); -/* Perform connections after messenger has been loaded from file. - * - * returns 0 on success - * returns -1 on failure - */ -int tox_connect(Tox *tox); - #ifdef __cplusplus } #endif -- cgit v1.2.3