diff options
author | Iain Hibbert <plunky@rya-online.net> | 2009-02-13 21:58:09 +0100 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2009-02-13 21:58:09 +0100 |
commit | dc590c7d0aced673bb395f12f39749b4ac8407fd (patch) | |
tree | 652d6657e3c7f46c9235a5ac0a796dcc1501fa46 /src/pulsecore/socket-client.c | |
parent | 9334d900e5f04982f1b55180c15c9e74005d3ea2 (diff) |
Optionally disable IPv6
Closes #79
Diffstat (limited to 'src/pulsecore/socket-client.c')
-rw-r--r-- | src/pulsecore/socket-client.c | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/src/pulsecore/socket-client.c b/src/pulsecore/socket-client.c index 6739effd..dc23bff6 100644 --- a/src/pulsecore/socket-client.c +++ b/src/pulsecore/socket-client.c @@ -278,7 +278,11 @@ static int sockaddr_prepare(pa_socket_client *c, const struct sockaddr *sa, size pa_make_fd_cloexec(c->fd); +#ifdef HAVE_IPV6 if (sa->sa_family == AF_INET || sa->sa_family == AF_INET6) +#else + if (sa->sa_family == AF_INET) +#endif pa_make_tcp_socket_low_delay(c->fd); else pa_make_socket_low_delay(c->fd); @@ -353,6 +357,7 @@ void pa_socket_client_set_callback(pa_socket_client *c, pa_socket_client_cb_t on c->userdata = userdata; } +#ifdef HAVE_IPV6 pa_socket_client* pa_socket_client_new_ipv6(pa_mainloop_api *m, uint8_t address[16], uint16_t port) { struct sockaddr_in6 sa; @@ -367,6 +372,7 @@ pa_socket_client* pa_socket_client_new_ipv6(pa_mainloop_api *m, uint8_t address[ return pa_socket_client_new_sockaddr(m, (struct sockaddr*) &sa, sizeof(sa)); } +#endif #ifdef HAVE_LIBASYNCNS @@ -470,7 +476,15 @@ pa_socket_client* pa_socket_client_new_string(pa_mainloop_api *m, const char*nam pa_snprintf(port, sizeof(port), "%u", (unsigned) a.port); memset(&hints, 0, sizeof(hints)); - hints.ai_family = a.type == PA_PARSED_ADDRESS_TCP4 ? PF_INET : (a.type == PA_PARSED_ADDRESS_TCP6 ? PF_INET6 : PF_UNSPEC); + if (a.type == PA_PARSED_ADDRESS_TCP4) + hints.ai_family = PF_INET; +#ifdef HAVE_IPV6 + else if (a.type == PA_PARSED_ADDRESS_TCP6) + hints.ai_family = PF_INET6; +#endif + else + hints.ai_family = PF_UNSPEC; + hints.ai_socktype = SOCK_STREAM; #if defined(HAVE_LIBASYNCNS) @@ -509,11 +523,13 @@ pa_socket_client* pa_socket_client_new_string(pa_mainloop_api *m, const char*nam struct hostent *host = NULL; struct sockaddr_in s; +#ifdef HAVE_IPV6 /* FIXME: PF_INET6 support */ if (hints.ai_family == PF_INET6) { pa_log_error("IPv6 is not supported on Windows"); goto finish; } +#endif host = gethostbyname(a.path_or_host); if (!host) { |