diff options
author | Lennart Poettering <lennart@poettering.net> | 2006-04-06 23:28:15 +0000 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2006-04-06 23:28:15 +0000 |
commit | 73035a82a7abde862b171daf7b4cb77a50c8e14b (patch) | |
tree | 3b3b1d27c91a8c3f7e91e646e20c5dff62add699 | |
parent | ac3d11f833ca7eb4ff3a1c0cb2e2cfd82da11813 (diff) |
* set IPV6_V6ONLY for IPv6 sockets, to avoid warning when both ipv6 and the ipv4 sockets try to bind to the same port
* enable SO_REUSEADDR only on platforms that support it
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@643 fefdeb5f-60dc-0310-8127-8f9354f1896f
-rw-r--r-- | src/polypcore/socket-server.c | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/src/polypcore/socket-server.c b/src/polypcore/socket-server.c index baa31e68..b27816d4 100644 --- a/src/polypcore/socket-server.c +++ b/src/polypcore/socket-server.c @@ -231,8 +231,10 @@ pa_socket_server* pa_socket_server_new_ipv4(pa_mainloop_api *m, uint32_t address pa_fd_set_cloexec(fd, 1); - if (setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, (void*)&on, sizeof(on)) < 0) +#ifdef SO_REUSEADDR + if (setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on)) < 0) pa_log(__FILE__": setsockopt(): %s", strerror(errno)); +#endif pa_socket_tcp_low_delay(fd); @@ -280,8 +282,15 @@ pa_socket_server* pa_socket_server_new_ipv6(pa_mainloop_api *m, const uint8_t ad pa_fd_set_cloexec(fd, 1); - if (setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, (void*)&on, sizeof(on)) < 0) - pa_log(__FILE__": setsockopt(): %s", strerror(errno)); +#ifdef IPV6_V6ONLY + if (setsockopt(fd, IPPROTO_IPV6, IPV6_V6ONLY, &on, sizeof(on)) < 0) + pa_log(__FILE__": setsockopt(IPPROTO_IPV6, IPV6_V6ONLY): %s", strerror(errno)); +#endif + +#ifdef SO_REUSEADDR + if (setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on)) < 0) + pa_log(__FILE__": setsockopt(SOL_SOCKET, SO_REUSEADDR, 1): %s", strerror(errno)); +#endif pa_socket_tcp_low_delay(fd); |