Skip to content

Commit 33a620b

Browse files
authored
[apps] Fixed conditional IP_ADD_SOURCE_MEMBERSHIP in testmedia (#2780).
1 parent 4682646 commit 33a620b

File tree

1 file changed

+6
-2
lines changed

1 file changed

+6
-2
lines changed

testing/testmedia.cpp

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2754,9 +2754,8 @@ void UdpCommon::Setup(string host, int port, map<string,string> attr)
27542754

27552755
if (is_multicast)
27562756
{
2757-
ip_mreq_source mreq_ssm;
27582757
ip_mreq mreq;
2759-
sockaddr_any maddr;
2758+
sockaddr_any maddr (AF_INET);
27602759
int opt_name;
27612760
void* mreq_arg_ptr;
27622761
socklen_t mreq_arg_size;
@@ -2777,13 +2776,18 @@ void UdpCommon::Setup(string host, int port, map<string,string> attr)
27772776

27782777
if (attr.count("source"))
27792778
{
2779+
#ifdef IP_ADD_SOURCE_MEMBERSHIP
2780+
ip_mreq_source mreq_ssm;
27802781
/* this is an ssm. we need to use the right struct and opt */
27812782
opt_name = IP_ADD_SOURCE_MEMBERSHIP;
27822783
mreq_ssm.imr_multiaddr.s_addr = sadr.sin.sin_addr.s_addr;
27832784
mreq_ssm.imr_interface.s_addr = maddr.sin.sin_addr.s_addr;
27842785
inet_pton(AF_INET, attr.at("source").c_str(), &mreq_ssm.imr_sourceaddr);
27852786
mreq_arg_size = sizeof(mreq_ssm);
27862787
mreq_arg_ptr = &mreq_ssm;
2788+
#else
2789+
throw std::runtime_error("UdpCommon: source-filter multicast not supported by OS");
2790+
#endif
27872791
}
27882792
else
27892793
{

0 commit comments

Comments
 (0)