diff options
Diffstat (limited to 'node')
-rw-r--r-- | node/Multicaster.cpp | 2 | ||||
-rw-r--r-- | node/Network.hpp | 8 |
2 files changed, 7 insertions, 3 deletions
diff --git a/node/Multicaster.cpp b/node/Multicaster.cpp index 1c05e2df..44a8d86a 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> 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 ada491a6..fa76152b 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; } /** |