summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorirungentoo <irungentoo@gmail.com>2013-09-14 20:38:48 -0400
committerirungentoo <irungentoo@gmail.com>2013-09-14 20:38:48 -0400
commitdde98eb34567a274d444893f8c98868ba9d1fa4b (patch)
tree065ed2886fb64e11c3513ec6649cd772de395552
parent20a8fb8a231d158368b8f2db2aab01e443f81b98 (diff)
DHT peer finding for new friends should now be slightly faster.
Also fixed the "[i] could not send message" bug in nTox.
-rw-r--r--testing/nTox.c2
-rw-r--r--toxcore/DHT.c19
2 files changed, 20 insertions, 1 deletions
diff --git a/testing/nTox.c b/testing/nTox.c
index 453c7489..73b55427 100644
--- a/testing/nTox.c
+++ b/testing/nTox.c
@@ -284,7 +284,7 @@ void line_eval(Tox *m, char *line)
284 284
285 int num = atoi(numstring); 285 int num = atoi(numstring);
286 286
287 if (tox_sendmessage(m, num, (uint8_t *) message, strlen(message) + 1) != 1) { 287 if (tox_sendmessage(m, num, (uint8_t *) message, strlen(message) + 1) < 1) {
288 new_lines("[i] could not send message"); 288 new_lines("[i] could not send message");
289 } else { 289 } else {
290 new_lines(format_message(m, message, -1)); 290 new_lines(format_message(m, message, -1));
diff --git a/toxcore/DHT.c b/toxcore/DHT.c
index 51dd60f2..11f25880 100644
--- a/toxcore/DHT.c
+++ b/toxcore/DHT.c
@@ -808,6 +808,24 @@ static int handle_sendnodes_ipv6(void *object, IP_Port source, uint8_t *packet,
808/*----------------------------------------------------------------------------------*/ 808/*----------------------------------------------------------------------------------*/
809/*------------------------END of packet handling functions--------------------------*/ 809/*------------------------END of packet handling functions--------------------------*/
810 810
811/*
812 * Send get nodes requests with client_id to max_num peers in list of length length
813 */
814static void get_bunchnodes(DHT *dht, Client_data *list, uint16_t length, uint16_t max_num, uint8_t *client_id)
815{
816 uint64_t temp_time = unix_time();
817 uint32_t i, num = 0;
818
819 for (i = 0; i < length; ++i)
820 if (ipport_isset(&(list[i].ip_port)) && !is_timeout(temp_time, list[i].ret_timestamp, BAD_NODE_TIMEOUT)) {
821 getnodes(dht, list[i].ip_port, list[i].client_id, client_id);
822 ++num;
823
824 if (num >= max_num)
825 return;
826 }
827}
828
811int DHT_addfriend(DHT *dht, uint8_t *client_id) 829int DHT_addfriend(DHT *dht, uint8_t *client_id)
812{ 830{
813 if (friend_number(dht, client_id) != -1) /* Is friend already in DHT? */ 831 if (friend_number(dht, client_id) != -1) /* Is friend already in DHT? */
@@ -825,6 +843,7 @@ int DHT_addfriend(DHT *dht, uint8_t *client_id)
825 843
826 dht->friends_list[dht->num_friends].NATping_id = ((uint64_t)random_int() << 32) + random_int(); 844 dht->friends_list[dht->num_friends].NATping_id = ((uint64_t)random_int() << 32) + random_int();
827 ++dht->num_friends; 845 ++dht->num_friends;
846 get_bunchnodes(dht, dht->close_clientlist, LCLIENT_LIST, MAX_FRIEND_CLIENTS, client_id);/*TODO: make this better?*/
828 return 0; 847 return 0;
829} 848}
830 849