diff --git a/src/audio/audio.h b/src/audio/audio.h index 644d927d4..e4565a280 100644 --- a/src/audio/audio.h +++ b/src/audio/audio.h @@ -115,9 +115,9 @@ class audio_frame2 { public: audio_frame2(); - audio_frame2(audio_frame2&& other) = default; + audio_frame2(audio_frame2 &&) = default; audio_frame2(struct audio_frame *); - audio_frame2& operator=(audio_frame2&& other) = default; + audio_frame2& operator=(audio_frame2 &&) = default; void init(int nr_channels, audio_codec_t codec, int bps, int sample_rate); void append(audio_frame2 const &frame); void append(int channel, const char *data, size_t length); diff --git a/src/control_socket.cpp b/src/control_socket.cpp index 8c7544a0c..71727efb0 100644 --- a/src/control_socket.cpp +++ b/src/control_socket.cpp @@ -204,6 +204,13 @@ int control_init(int port, int connection_type, struct control_state **state, st perror("Control socket - setsockopt"); } + int ipv6only = 0; + if (setsockopt(s->socket_fd, IPPROTO_IPV6, IPV6_V6ONLY, (char *)&ipv6only, + sizeof(ipv6only)) != 0) { + perror("setsockopt IPV6_V6ONLY"); + } + + /* setting address to in6addr_any allows connections to be established * from both IPv4 and IPv6 hosts. This behavior can be modified * using the IPPROTO_IPV6 level socket option IPV6_V6ONLY if required.*/ diff --git a/src/rtp/net_udp.cpp b/src/rtp/net_udp.cpp index fbb052921..a95609279 100644 --- a/src/rtp/net_udp.cpp +++ b/src/rtp/net_udp.cpp @@ -1530,6 +1530,7 @@ bool udp_port_pair_is_free(const char *addr, bool use_ipv6, int even_port) if (ipv6) { struct sockaddr_in6 *s_in6 = (struct sockaddr_in6 *) &s_st; + int ipv6only = 0; s_in6->sin6_family = AF_INET6; s_in6->sin6_port = htons(even_port + i); #ifdef HAVE_SIN6_LEN @@ -1538,6 +1539,12 @@ bool udp_port_pair_is_free(const char *addr, bool use_ipv6, int even_port) s_in6->sin6_addr = in6addr_any; len = sizeof(struct sockaddr_in6); fd = socket(AF_INET6, SOCK_DGRAM, 0); + if (SETSOCKOPT + (fd, IPPROTO_IPV6, IPV6_V6ONLY, (char *)&ipv6only, + sizeof(ipv6only)) != 0) { + socket_error("setsockopt IPV6_V6ONLY"); + return false; + } } else { struct sockaddr_in *s_in = (struct sockaddr_in *) &s_st; s_in->sin_family = AF_INET;