فهرست منبع

Check for subscribed multicast groups should be able to check groups bridged behind me.

Adam Ierymenko 10 سال پیش
والد
کامیت
758bf949db
2فایلهای تغییر یافته به همراه7 افزوده شده و 3 حذف شده
  1. 1 1
      node/Multicaster.cpp
  2. 6 2
      node/Network.hpp

+ 1 - 1
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;

+ 6 - 2
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;
 	}
 
 	/**