Kademlia wait for result until time out.

yamux
Jose Marcial Vieira Bisneto 2017-03-16 21:06:19 -03:00
parent 52f8ce2b3d
commit f0bb7375c3
1 changed files with 10 additions and 3 deletions

View File

@ -442,9 +442,16 @@ struct MultiAddress** search_kademlia(char* peer_id, int timeout)
char str[sizeof ipstr + 16];
int c = 0;
to = search_kademlia_internal (id, 0, to); // Repeat search to collect result.
if (to == 0) return NULL; // time out.
usleep(2000000); // Wait a few seconds for the result.
// Wait for result or time out.
while (to > 0 &&
search_result->ipv4_count == 0 &&
search_result->ipv6_count == 0) {
to = search_kademlia_internal (id, 0, to); // Repeat search to collect result.
if (to <= 0) return NULL; // time out.
usleep(2000000); // Wait a few seconds for the result.
to -= 2000000;
}
ret = calloc(search_result->ipv4_count + search_result->ipv6_count + 1, // IPv4 + IPv6 itens and a NULL terminator.
sizeof (struct MultiAddress*)); // array of pointer.
if (!ret) {