Kademlia wait for result until time out.
This commit is contained in:
parent
52f8ce2b3d
commit
f0bb7375c3
1 changed files with 10 additions and 3 deletions
|
@ -442,9 +442,16 @@ struct MultiAddress** search_kademlia(char* peer_id, int timeout)
|
||||||
char str[sizeof ipstr + 16];
|
char str[sizeof ipstr + 16];
|
||||||
int c = 0;
|
int c = 0;
|
||||||
|
|
||||||
|
// 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.
|
to = search_kademlia_internal (id, 0, to); // Repeat search to collect result.
|
||||||
if (to == 0) return NULL; // time out.
|
if (to <= 0) return NULL; // time out.
|
||||||
usleep(2000000); // Wait a few seconds for the result.
|
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.
|
ret = calloc(search_result->ipv4_count + search_result->ipv6_count + 1, // IPv4 + IPv6 itens and a NULL terminator.
|
||||||
sizeof (struct MultiAddress*)); // array of pointer.
|
sizeof (struct MultiAddress*)); // array of pointer.
|
||||||
if (!ret) {
|
if (!ret) {
|
||||||
|
|
Loading…
Reference in a new issue