diff options
author | Olivier CrĂȘte <olivier.crete@collabora.com> | 2013-04-04 14:04:03 -0400 |
---|---|---|
committer | Olivier CrĂȘte <olivier.crete@collabora.com> | 2013-04-04 14:28:45 -0400 |
commit | cdf4998b4ce7da59f15aa88b5f4629e5995cab94 (patch) | |
tree | 828cd1572fc8770a56fdbc4cc893805f4c30e2ef /tests | |
parent | 81351b580da0f8db520ca0ff5e5725c199a7a8b9 (diff) | |
download | farstream-cdf4998b4ce7da59f15aa88b5f4629e5995cab94.tar.gz |
tests: Use GSocket instead of getaddrinfo to parse IP addresses
Diffstat (limited to 'tests')
-rw-r--r-- | tests/check/Makefile.am | 4 | ||||
-rw-r--r-- | tests/check/transmitter/rawudp.c | 4 | ||||
-rw-r--r-- | tests/check/transmitter/stunalternd.c | 59 | ||||
-rw-r--r-- | tests/check/transmitter/stunalternd.h | 4 |
4 files changed, 38 insertions, 33 deletions
diff --git a/tests/check/Makefile.am b/tests/check/Makefile.am index 9b171b63..78cd60d6 100644 --- a/tests/check/Makefile.am +++ b/tests/check/Makefile.am @@ -76,9 +76,11 @@ base_fscodec_SOURCES = \ base/fscodec.c -transmitter_rawudp_CFLAGS = $(AM_CFLAGS) $(GUPNP_CFLAGS) $(NICE_CFLAGS) +transmitter_rawudp_CFLAGS = $(AM_CFLAGS) \ + $(GUPNP_CFLAGS) $(GIO_CFLAGS) $(NICE_CFLAGS) transmitter_rawudp_LDADD = $(LDADD) \ $(GUPNP_LIBS) \ + $(GIO_LIBS) \ $(NICE_LIBS) transmitter_rawudp_SOURCES = \ check-threadsafe.h \ diff --git a/tests/check/transmitter/rawudp.c b/tests/check/transmitter/rawudp.c index b8749ec1..a24b72e4 100644 --- a/tests/check/transmitter/rawudp.c +++ b/tests/check/transmitter/rawudp.c @@ -915,7 +915,7 @@ GST_END_TEST; void setup_stunalternd_valid (void) { - stun_alternd_data = stun_alternd_init (AF_INET, + stun_alternd_data = stun_alternd_init (G_SOCKET_FAMILY_IPV4, "127.0.0.1", 3478, 3480); if (!stun_alternd_data) @@ -926,7 +926,7 @@ setup_stunalternd_valid (void) static void setup_stunalternd_loop (void) { - stun_alternd_data = stun_alternd_init (AF_INET, + stun_alternd_data = stun_alternd_init (G_SOCKET_FAMILY_IPV4, "127.0.0.1", 3478, 3478); if (!stun_alternd_data) diff --git a/tests/check/transmitter/stunalternd.c b/tests/check/transmitter/stunalternd.c index a1f796db..32dc809f 100644 --- a/tests/check/transmitter/stunalternd.c +++ b/tests/check/transmitter/stunalternd.c @@ -31,7 +31,6 @@ #include <sys/types.h> #include <sys/socket.h> -#include <netdb.h> #include <netinet/in.h> #include <unistd.h> @@ -66,7 +65,7 @@ static const uint16_t known_attributes[] = { /** * Creates a listening socket */ -int listen_socket (int fam, int type, int proto, unsigned int port) +int listen_socket (GSocketFamily fam, int type, int proto, unsigned int port) { int yes = 1; int fd = socket (fam, type, proto); @@ -87,22 +86,23 @@ int listen_socket (int fam, int type, int proto, unsigned int port) goto error; memset (&addr, 0, sizeof (addr)); - addr.storage.ss_family = fam; switch (fam) { - case AF_INET: + case G_SOCKET_FAMILY_IPV4: + addr.storage.ss_family = AF_INET; addr.in.sin_port = htons (port); socklen = sizeof (struct sockaddr_in); break; - case AF_INET6: + case G_SOCKET_FAMILY_IPV6: + addr.storage.ss_family = AF_INET6; addr.in6.sin6_port = htons (port); socklen = sizeof (struct sockaddr_in6); break; default: socklen = 0; - abort (); + g_assert_not_reached (); } if (bind (fd, (struct sockaddr *)&addr, socklen)) @@ -115,16 +115,19 @@ int listen_socket (int fam, int type, int proto, unsigned int port) { switch (fam) { -#ifdef IP_RECVERR case AF_INET: +#ifdef IP_RECVERR setsockopt (fd, SOL_IP, IP_RECVERR, &yes, sizeof (yes)); - break; #endif -#ifdef IPV6_RECVERR + break; case AF_INET6: +#ifdef IPV6_RECVERR setsockopt (fd, SOL_IPV6, IPV6_RECVERR, &yes, sizeof (yes)); - break; #endif + break; + default: + g_assert_not_reached (); + break; } } else @@ -259,34 +262,32 @@ send_buf: static int -resolve_addr (char *server, unsigned int port, int family, +resolve_addr (char *server, unsigned int port, GSocketFamily family, struct sockaddr *addr, socklen_t *addr_len) { - struct addrinfo hints, *res; - int ret = -1; - char portstr[10]; + GInetAddress *inetaddr; + GSocketAddress *sockaddr; + gboolean ret; - memset (&hints, 0, sizeof (hints)); - hints.ai_family = family; - hints.ai_socktype = SOCK_DGRAM; - hints.ai_flags = AI_NUMERICHOST; + inetaddr = g_inet_address_new_from_string (server); - snprintf (portstr, 9, "%u", port); + if (!inetaddr) + return 0; - ret = getaddrinfo (server, portstr, &hints, &res); - if (ret) - { - fprintf (stderr, "%s: %s:%s\n", server, portstr, - gai_strerror (ret)); + if (g_inet_address_get_family (inetaddr) != family) { + g_object_unref (inetaddr); return 0; } - memcpy (addr, res->ai_addr, res->ai_addrlen); - *addr_len = res->ai_addrlen; + sockaddr = g_inet_socket_address_new (inetaddr, port); + + ret = g_socket_address_to_native (sockaddr, addr, + sizeof(struct sockaddr_storage), NULL); - freeaddrinfo (res); + g_object_unref (sockaddr); + g_object_unref (inetaddr); - return 1; + return ret; } struct thread_data { @@ -313,7 +314,7 @@ void * stund_thread (void *data) return NULL; } -void *stun_alternd_init (int family, char *redirect_ip, +void *stun_alternd_init (GSocketFamily family, char *redirect_ip, unsigned int redirect_port, unsigned int listen_port) { diff --git a/tests/check/transmitter/stunalternd.h b/tests/check/transmitter/stunalternd.h index 25e975c2..2ab0f89a 100644 --- a/tests/check/transmitter/stunalternd.h +++ b/tests/check/transmitter/stunalternd.h @@ -28,7 +28,9 @@ #include <sys/socket.h> #include <pthread.h> -void *stun_alternd_init (int family, +#include <gio/gio.h> + +void *stun_alternd_init (GSocketFamily family, char *redirect_ip, unsigned int redirect_port, unsigned int listen_port); |