aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSree Harsha Totakura <totakura@in.tum.de>2012-10-31 21:13:32 +0000
committerSree Harsha Totakura <totakura@in.tum.de>2012-10-31 21:13:32 +0000
commit48c3f008109fe5c1925eee5fc946e5e606d410c7 (patch)
tree08d9e0d5f19debf2afc426085cb8118fabd7596b
parentd3d836a42bfa17c9872a7eef761e1f369076fae3 (diff)
downloadgnunet-48c3f008109fe5c1925eee5fc946e5e606d410c7.tar.gz
gnunet-48c3f008109fe5c1925eee5fc946e5e606d410c7.zip
check all available addresses
-rw-r--r--src/testing/testing.c29
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,