diff options
author | irungentoo <irungentoo@gmail.com> | 2013-09-25 10:07:07 -0400 |
---|---|---|
committer | irungentoo <irungentoo@gmail.com> | 2013-09-25 10:07:07 -0400 |
commit | 3c78aefce07cf83a5236b0fcdb202ff463ff6a60 (patch) | |
tree | 037c60eb141cb7b427c51e8b5ce1919ed9f48eeb /toxcore/DHT.c | |
parent | 83c665f2c40928935a26963dbc3689defb332687 (diff) |
Fixed bug where hole punching was attempted even though the
clients were connected.
Increased the number of ports tried per interval of time.
Also astyled the files.
Diffstat (limited to 'toxcore/DHT.c')
-rw-r--r-- | toxcore/DHT.c | 24 |
1 files changed, 14 insertions, 10 deletions
diff --git a/toxcore/DHT.c b/toxcore/DHT.c index ad4c8a1d..db3c5883 100644 --- a/toxcore/DHT.c +++ b/toxcore/DHT.c | |||
@@ -51,7 +51,7 @@ | |||
51 | /* Ping interval in seconds for each random sending of a get nodes request. */ | 51 | /* Ping interval in seconds for each random sending of a get nodes request. */ |
52 | #define GET_NODE_INTERVAL 10 | 52 | #define GET_NODE_INTERVAL 10 |
53 | 53 | ||
54 | #define MAX_PUNCHING_PORTS 32 | 54 | #define MAX_PUNCHING_PORTS 128 |
55 | 55 | ||
56 | /* Interval in seconds between punching attempts*/ | 56 | /* Interval in seconds between punching attempts*/ |
57 | #define PUNCH_INTERVAL 10 | 57 | #define PUNCH_INTERVAL 10 |
@@ -137,11 +137,12 @@ static int client_or_ip_port_in_list(Client_data *list, uint32_t length, uint8_t | |||
137 | uint64_t temp_time = unix_time(); | 137 | uint64_t temp_time = unix_time(); |
138 | 138 | ||
139 | uint8_t candropipv4 = 1; | 139 | uint8_t candropipv4 = 1; |
140 | |||
140 | if (ip_port.ip.family == AF_INET6) { | 141 | if (ip_port.ip.family == AF_INET6) { |
141 | uint8_t ipv6cnt = 0; | 142 | uint8_t ipv6cnt = 0; |
142 | 143 | ||
143 | /* ipv6: count how many spots are used */ | 144 | /* ipv6: count how many spots are used */ |
144 | for(i = 0; i < length; i++) | 145 | for (i = 0; i < length; i++) |
145 | if (list[i].ip_port.ip.family == AF_INET6) | 146 | if (list[i].ip_port.ip.family == AF_INET6) |
146 | ipv6cnt++; | 147 | ipv6cnt++; |
147 | 148 | ||
@@ -318,11 +319,12 @@ static int replace_bad( Client_data *list, | |||
318 | uint64_t temp_time = unix_time(); | 319 | uint64_t temp_time = unix_time(); |
319 | 320 | ||
320 | uint8_t candropipv4 = 1; | 321 | uint8_t candropipv4 = 1; |
322 | |||
321 | if (ip_port.ip.family == AF_INET6) { | 323 | if (ip_port.ip.family == AF_INET6) { |
322 | uint32_t ipv6cnt = 0; | 324 | uint32_t ipv6cnt = 0; |
323 | 325 | ||
324 | /* ipv6: count how many spots are used */ | 326 | /* ipv6: count how many spots are used */ |
325 | for(i = 0; i < length; i++) | 327 | for (i = 0; i < length; i++) |
326 | if (list[i].ip_port.ip.family == AF_INET6) | 328 | if (list[i].ip_port.ip.family == AF_INET6) |
327 | ipv6cnt++; | 329 | ipv6cnt++; |
328 | 330 | ||
@@ -334,8 +336,9 @@ static int replace_bad( Client_data *list, | |||
334 | for (i = 0; i < length; ++i) { | 336 | for (i = 0; i < length; ++i) { |
335 | /* If node is bad */ | 337 | /* If node is bad */ |
336 | Client_data *client = &list[i]; | 338 | Client_data *client = &list[i]; |
339 | |||
337 | if ((candropipv4 || (client->ip_port.ip.family == AF_INET6)) && | 340 | if ((candropipv4 || (client->ip_port.ip.family == AF_INET6)) && |
338 | is_timeout(temp_time, client->timestamp, BAD_NODE_TIMEOUT)) { | 341 | is_timeout(temp_time, client->timestamp, BAD_NODE_TIMEOUT)) { |
339 | memcpy(client->client_id, client_id, CLIENT_ID_SIZE); | 342 | memcpy(client->client_id, client_id, CLIENT_ID_SIZE); |
340 | client->ip_port = ip_port; | 343 | client->ip_port = ip_port; |
341 | client->timestamp = temp_time; | 344 | client->timestamp = temp_time; |
@@ -381,11 +384,12 @@ static int replace_good( Client_data *list, | |||
381 | sort_list(list, length, comp_client_id); | 384 | sort_list(list, length, comp_client_id); |
382 | 385 | ||
383 | uint8_t candropipv4 = 1; | 386 | uint8_t candropipv4 = 1; |
387 | |||
384 | if (ip_port.ip.family == AF_INET6) { | 388 | if (ip_port.ip.family == AF_INET6) { |
385 | uint32_t i, ipv6cnt = 0; | 389 | uint32_t i, ipv6cnt = 0; |
386 | 390 | ||
387 | /* ipv6: count how many spots are used */ | 391 | /* ipv6: count how many spots are used */ |
388 | for(i = 0; i < length; i++) | 392 | for (i = 0; i < length; i++) |
389 | if (list[i].ip_port.ip.family == AF_INET6) | 393 | if (list[i].ip_port.ip.family == AF_INET6) |
390 | ipv6cnt++; | 394 | ipv6cnt++; |
391 | 395 | ||
@@ -419,6 +423,7 @@ static int replace_good( Client_data *list, | |||
419 | */ | 423 | */ |
420 | for (i = 0; i < length; i++) { | 424 | for (i = 0; i < length; i++) { |
421 | Client_data *client = &list[i]; | 425 | Client_data *client = &list[i]; |
426 | |||
422 | if (client->ip_port.ip.family == AF_INET6) { | 427 | if (client->ip_port.ip.family == AF_INET6) { |
423 | if (id_closest(comp_client_id, list[i].client_id, client_id) == 2) | 428 | if (id_closest(comp_client_id, list[i].client_id, client_id) == 2) |
424 | replace = i; | 429 | replace = i; |
@@ -1138,14 +1143,13 @@ static int friend_iplist(DHT *dht, IP_Port *ip_portlist, uint16_t friend_num) | |||
1138 | Client_data *client; | 1143 | Client_data *client; |
1139 | 1144 | ||
1140 | for (i = 0; i < MAX_FRIEND_CLIENTS; ++i) { | 1145 | for (i = 0; i < MAX_FRIEND_CLIENTS; ++i) { |
1141 | client = &friend->client_list[i]; | 1146 | client = &(friend->client_list[i]); |
1147 | |||
1148 | if (id_equal(client->client_id, friend->client_id) && !is_timeout(temp_time, client->timestamp, BAD_NODE_TIMEOUT)) | ||
1149 | return 0; | ||
1142 | 1150 | ||
1143 | /* If ip is not zero and node is good. */ | 1151 | /* If ip is not zero and node is good. */ |
1144 | if (ip_isset(&client->ret_ip_port.ip) && !is_timeout(temp_time, client->ret_timestamp, BAD_NODE_TIMEOUT)) { | 1152 | if (ip_isset(&client->ret_ip_port.ip) && !is_timeout(temp_time, client->ret_timestamp, BAD_NODE_TIMEOUT)) { |
1145 | |||
1146 | if (id_equal(client->client_id, friend->client_id)) | ||
1147 | return 0; | ||
1148 | |||
1149 | ip_portlist[num_ips] = client->ret_ip_port; | 1153 | ip_portlist[num_ips] = client->ret_ip_port; |
1150 | ++num_ips; | 1154 | ++num_ips; |
1151 | } | 1155 | } |