aboutsummaryrefslogtreecommitdiffhomepage
path: root/backends/libmmbackend.c
diff options
context:
space:
mode:
authorcbdev <cb@cbcdn.com>2020-04-24 23:28:24 +0200
committercbdev <cb@cbcdn.com>2020-04-24 23:28:24 +0200
commit4a575cd3c466abfccf4516f5e9f6eacd534f4dc1 (patch)
tree474b538efcfb6b1ae57e6e7b2191edcbdc2878cf /backends/libmmbackend.c
parentff785c5c5a300d01b404c48335de7f68ad8711a9 (diff)
downloadmidimonster-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.c4
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));
}
}