From gitlab at videolan.org Tue Nov 20 14:53:44 2018 From: gitlab at videolan.org (Christophe Massiot) Date: Tue, 20 Nov 2018 14:53:44 +0100 Subject: [multicat-devel] [Git][videolan/multicat][master] util: fix multicast logic (fixes multilive) Message-ID: <5bf411e868e4a_4e0f3fbd70ed50cc75660@gitlab.mail> Christophe Massiot pushed to branch master at VideoLAN / multicat Commits: d50d3d06 by Christophe Massiot at 2018-11-20T13:53:15Z util: fix multicast logic (fixes multilive) - - - - - 2 changed files: - NEWS - util.c Changes: ===================================== NEWS ===================================== @@ -1,3 +1,7 @@ +Changes between 2.3 and 2.4: +---------------------------- + * Fix multilive + Changes between 2.2 and 2.3: ---------------------------- * New VRRP-like implementation multilive ===================================== util.c ===================================== @@ -905,34 +905,39 @@ normal_bind: if ( !*pb_tcp ) { - if ( i_ttl ) + if ( i_family == AF_INET + && IN_MULTICAST(ntohl(connect_addr.sin.sin_addr.s_addr)) ) { - if ( i_family == AF_INET - && IN_MULTICAST(ntohl(connect_addr.sin.sin_addr.s_addr)) ) + if ( p_opt != NULL && p_opt->pb_multicast != NULL ) + *p_opt->pb_multicast = true; + + if ( i_ttl && + setsockopt( i_fd, IPPROTO_IP, IP_MULTICAST_TTL, + (void *)&i_ttl, sizeof(i_ttl) ) == -1 ) { - if ( setsockopt( i_fd, IPPROTO_IP, IP_MULTICAST_TTL, - (void *)&i_ttl, sizeof(i_ttl) ) == -1 ) - { - msg_Err( NULL, "couldn't set TTL (%s)", - strerror(errno) ); - PrintSocket( "socket definition:", &bind_addr, - &connect_addr ); - exit(EXIT_FAILURE); - } + msg_Err( NULL, "couldn't set TTL (%s)", + strerror(errno) ); + PrintSocket( "socket definition:", &bind_addr, + &connect_addr ); + exit(EXIT_FAILURE); } + } - if ( i_family == AF_INET6 - && IN6_IS_ADDR_MULTICAST(&connect_addr.sin6.sin6_addr) ) + if ( i_family == AF_INET6 + && IN6_IS_ADDR_MULTICAST(&connect_addr.sin6.sin6_addr) ) + { + if ( p_opt != NULL && p_opt->pb_multicast != NULL ) + *p_opt->pb_multicast = true; + + if ( i_ttl && + setsockopt( i_fd, IPPROTO_IPV6, IPV6_MULTICAST_HOPS, + (void *)&i_ttl, sizeof(i_ttl) ) == -1 ) { - if ( setsockopt( i_fd, IPPROTO_IPV6, IPV6_MULTICAST_HOPS, - (void *)&i_ttl, sizeof(i_ttl) ) == -1 ) - { - msg_Err( NULL, "couldn't set TTL (%s)", - strerror(errno) ); - PrintSocket( "socket definition:", &bind_addr, - &connect_addr ); - exit(EXIT_FAILURE); - } + msg_Err( NULL, "couldn't set TTL (%s)", + strerror(errno) ); + PrintSocket( "socket definition:", &bind_addr, + &connect_addr ); + exit(EXIT_FAILURE); } } View it on GitLab: https://code.videolan.org/videolan/multicat/commit/d50d3d064eeb6f8667034c6ab2dec0f2a73d1c2d -- View it on GitLab: https://code.videolan.org/videolan/multicat/commit/d50d3d064eeb6f8667034c6ab2dec0f2a73d1c2d You're receiving this email because of your account on code.videolan.org.