From 33e5c34aaf6dd9f4b7af17538cc334bf7a8bfaba Mon Sep 17 00:00:00 2001 From: irungentoo Date: Fri, 26 Sep 2014 21:14:36 -0400 Subject: [PATCH] Only set dht public key and direct ip when first creating connection. Check if ip family is valid in set_direct_ip_port() function. --- toxcore/Messenger.c | 12 ++++++------ toxcore/net_crypto.c | 3 +++ 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/toxcore/Messenger.c b/toxcore/Messenger.c index 521562b8..9383af68 100644 --- a/toxcore/Messenger.c +++ b/toxcore/Messenger.c @@ -2413,13 +2413,13 @@ void do_friends(Messenger *m) } } - friend_new_connection(m, i, m->friendlist[i].client_id); + if (friend_new_connection(m, i, m->friendlist[i].client_id) == 0) { + if (m->friendlist[i].dht_lock) + set_connection_dht_public_key(m->net_crypto, m->friendlist[i].crypt_connection_id, m->friendlist[i].dht_temp_pk, + current_time_monotonic()); - if (m->friendlist[i].dht_lock) - set_connection_dht_public_key(m->net_crypto, m->friendlist[i].crypt_connection_id, m->friendlist[i].dht_temp_pk, - current_time_monotonic()); - - set_direct_ip_port(m->net_crypto, m->friendlist[i].crypt_connection_id, m->friendlist[i].dht_ip_port); + set_direct_ip_port(m->net_crypto, m->friendlist[i].crypt_connection_id, m->friendlist[i].dht_ip_port); + } } diff --git a/toxcore/net_crypto.c b/toxcore/net_crypto.c index a286df2a..59f6ee9a 100644 --- a/toxcore/net_crypto.c +++ b/toxcore/net_crypto.c @@ -1700,6 +1700,9 @@ int set_direct_ip_port(Net_Crypto *c, int crypt_connection_id, IP_Port ip_port) if (conn == 0) return -1; + if (ip_port.ip.family != AF_INET && ip_port.ip.family != AF_INET6) + return -1; + if (!ipport_equal(&ip_port, &conn->ip_port)) { if (bs_list_add(&c->ip_port_list, &ip_port, crypt_connection_id)) { bs_list_remove(&c->ip_port_list, &conn->ip_port, crypt_connection_id);