From 758bf949db708358b1ad82297fc859b16cb3c4d2 Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Mon, 6 Apr 2015 19:34:36 -0700 Subject: [PATCH] Check for subscribed multicast groups should be able to check groups bridged behind me. --- node/Multicaster.cpp | 2 +- node/Network.hpp | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/node/Multicaster.cpp b/node/Multicaster.cpp index 1c05e2df0..44a8d86a8 100644 --- a/node/Multicaster.cpp +++ b/node/Multicaster.cpp @@ -81,7 +81,7 @@ unsigned int Multicaster::gather(const Address &queryingPeer,uint64_t nwid,const { // Return myself if I am a member of this group SharedPtr network(RR->node->network(nwid)); - if ((network)&&(network->subscribedToMulticastGroup(mg))) { + if ((network)&&(network->subscribedToMulticastGroup(mg,true))) { RR->identity.address().appendTo(appendTo); ++totalKnown; ++added; diff --git a/node/Network.hpp b/node/Network.hpp index ada491a6a..fa76152bb 100644 --- a/node/Network.hpp +++ b/node/Network.hpp @@ -116,10 +116,14 @@ public: * @param mg Multicast group * @return True if this network endpoint / peer is a member */ - bool subscribedToMulticastGroup(const MulticastGroup &mg) const + bool subscribedToMulticastGroup(const MulticastGroup &mg,bool includeBridgedGroups) const { Mutex::Lock _l(_lock); - return (std::find(_myMulticastGroups.begin(),_myMulticastGroups.end(),mg) != _myMulticastGroups.end()); + if (std::find(_myMulticastGroups.begin(),_myMulticastGroups.end(),mg) != _myMulticastGroups.end()) + return true; + else if (includeBridgedGroups) + return (_multicastGroupsBehindMe.find(mg) != _multicastGroupsBehindMe.end()); + else return false; } /**