diff options
author | cbdev <cb@cbcdn.com> | 2020-04-24 23:28:24 +0200 |
---|---|---|
committer | cbdev <cb@cbcdn.com> | 2020-04-24 23:28:24 +0200 |
commit | 4a575cd3c466abfccf4516f5e9f6eacd534f4dc1 (patch) | |
tree | 474b538efcfb6b1ae57e6e7b2191edcbdc2878cf /backends/libmmbackend.c | |
parent | ff785c5c5a300d01b404c48335de7f68ad8711a9 (diff) | |
download | midimonster-4a575cd3c466abfccf4516f5e9f6eacd534f4dc1.tar.gz midimonster-4a575cd3c466abfccf4516f5e9f6eacd534f4dc1.tar.bz2 midimonster-4a575cd3c466abfccf4516f5e9f6eacd534f4dc1.zip |
Set MCAST_LOOP/IPV6_V6ONLY only on supported sockets, select outbound multicast interfaces properly
Diffstat (limited to 'backends/libmmbackend.c')
-rw-r--r-- | backends/libmmbackend.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/backends/libmmbackend.c b/backends/libmmbackend.c index 186cc66..bad048c 100644 --- a/backends/libmmbackend.c +++ b/backends/libmmbackend.c @@ -167,7 +167,7 @@ int mmbackend_socket(char* host, char* port, int socktype, uint8_t listener, uin } yes = dualstack ? 0 : 1; - if(setsockopt(fd, IPPROTO_IPV6, IPV6_V6ONLY, (void*) &yes, sizeof(yes)) < 0){ + if(addr_it->ai_family == AF_INET6 && setsockopt(fd, IPPROTO_IPV6, IPV6_V6ONLY, (void*) &yes, sizeof(yes)) < 0){ LOGPF("Failed to %s dualstack operations on socket: %s", dualstack ? "enable" : "disable", mmbackend_socket_strerror(errno)); } @@ -178,7 +178,7 @@ int mmbackend_socket(char* host, char* port, int socktype, uint8_t listener, uin } yes = 0; - if(setsockopt(fd, IPPROTO_IP, IP_MULTICAST_LOOP, (void*) &yes, sizeof(yes)) < 0){ + if(setsockopt(fd, addr_it->ai_family == AF_INET ? IPPROTO_IP : IPPROTO_IPV6, addr_it->ai_family == AF_INET ? IP_MULTICAST_LOOP : IPV6_MULTICAST_LOOP, (void*) &yes, sizeof(yes)) < 0){ LOGPF("Failed to disable IP_MULTICAST_LOOP on socket: %s", mmbackend_socket_strerror(errno)); } } |