diff options
author | Sree Harsha Totakura <totakura@in.tum.de> | 2012-10-31 21:13:32 +0000 |
---|---|---|
committer | Sree Harsha Totakura <totakura@in.tum.de> | 2012-10-31 21:13:32 +0000 |
commit | 48c3f008109fe5c1925eee5fc946e5e606d410c7 (patch) | |
tree | 08d9e0d5f19debf2afc426085cb8118fabd7596b | |
parent | d3d836a42bfa17c9872a7eef761e1f369076fae3 (diff) | |
download | gnunet-48c3f008109fe5c1925eee5fc946e5e606d410c7.tar.gz gnunet-48c3f008109fe5c1925eee5fc946e5e606d410c7.zip |
check all available addresses
-rw-r--r-- | src/testing/testing.c | 29 |
1 files changed, 17 insertions, 12 deletions
diff --git a/src/testing/testing.c b/src/testing/testing.c index 577657897..21390635e 100644 --- a/src/testing/testing.c +++ b/src/testing/testing.c | |||
@@ -363,6 +363,7 @@ GNUNET_TESTING_reserve_port (struct GNUNET_TESTING_System *system, | |||
363 | struct GNUNET_NETWORK_Handle *socket; | 363 | struct GNUNET_NETWORK_Handle *socket; |
364 | struct addrinfo hint; | 364 | struct addrinfo hint; |
365 | struct addrinfo *ret; | 365 | struct addrinfo *ret; |
366 | struct addrinfo *ai; | ||
366 | uint32_t *port_buckets; | 367 | uint32_t *port_buckets; |
367 | char *open_port_str; | 368 | char *open_port_str; |
368 | int bind_status; | 369 | int bind_status; |
@@ -409,19 +410,23 @@ GNUNET_TESTING_reserve_port (struct GNUNET_TESTING_System *system, | |||
409 | GNUNET_asprintf (&open_port_str, "%u", (unsigned int) open_port); | 410 | GNUNET_asprintf (&open_port_str, "%u", (unsigned int) open_port); |
410 | ret = NULL; | 411 | ret = NULL; |
411 | GNUNET_assert (0 == getaddrinfo (NULL, open_port_str, &hint, &ret)); | 412 | GNUNET_assert (0 == getaddrinfo (NULL, open_port_str, &hint, &ret)); |
412 | GNUNET_free (open_port_str); | 413 | GNUNET_free (open_port_str); |
413 | socket = GNUNET_NETWORK_socket_create (ret->ai_family, | 414 | for (ai = ret; NULL != ai; ai = ai->ai_next) |
414 | (GNUNET_YES == is_tcp) ? | 415 | { |
415 | SOCK_STREAM : SOCK_DGRAM, | 416 | socket = GNUNET_NETWORK_socket_create (ai->ai_family, |
416 | 0); | 417 | (GNUNET_YES == is_tcp) ? |
417 | GNUNET_assert (NULL != socket); | 418 | SOCK_STREAM : SOCK_DGRAM, |
418 | bind_status = GNUNET_NETWORK_socket_bind (socket, | 419 | 0); |
419 | ret->ai_addr, | 420 | GNUNET_assert (NULL != socket); |
420 | ret->ai_addrlen); | 421 | bind_status = GNUNET_NETWORK_socket_bind (socket, |
421 | freeaddrinfo (ret); | 422 | ai->ai_addr, |
422 | GNUNET_NETWORK_socket_close (socket); | 423 | ai->ai_addrlen); |
423 | socket = NULL; | 424 | GNUNET_NETWORK_socket_close (socket); |
425 | if (GNUNET_OK != bind_status) | ||
426 | break; | ||
427 | } | ||
424 | port_buckets[index] |= (1U << pos); /* Set the port bit */ | 428 | port_buckets[index] |= (1U << pos); /* Set the port bit */ |
429 | freeaddrinfo (ret); | ||
425 | if (GNUNET_OK == bind_status) | 430 | if (GNUNET_OK == bind_status) |
426 | { | 431 | { |
427 | LOG (GNUNET_ERROR_TYPE_DEBUG, | 432 | LOG (GNUNET_ERROR_TYPE_DEBUG, |