فهرست منبع

Don't need to check peer version for every item in txQueue since there is only one peer.

Adam Ierymenko 11 سال پیش
والد
کامیت
7c0f5e97e1
1فایلهای تغییر یافته به همراه8 افزوده شده و 10 حذف شده
  1. 8 10
      node/Multicaster.cpp

+ 8 - 10
node/Multicaster.cpp

@@ -386,17 +386,15 @@ void Multicaster::_add(uint64_t now,uint64_t nwid,const MulticastGroup &mg,Multi
 	//TRACE("..MC %s joined multicast group %.16llx/%s via %s",member.toString().c_str(),nwid,mg.toString().c_str(),((learnedFrom) ? learnedFrom.toString().c_str() : "(direct)"));
 
 	// Try to send to any outgoing multicasts that are waiting for more recipients
-	for(std::list<OutboundMulticast>::iterator tx(gs.txQueue.begin());tx!=gs.txQueue.end();) {
-		{ // TODO / LEGACY: don't send new multicast frame to old peers (if we know their version)
-			SharedPtr<Peer> p(RR->topology->getPeer(member));
-			if ((p)&&(p->remoteVersionKnown())&&(p->remoteVersionMajor() < 1))
-				continue;
+	// TODO / LEGACY: don't send new multicast frame to old peers (if we know their version)
+	SharedPtr<Peer> p(RR->topology->getPeer(member));
+	if ((!p)||(!p->remoteVersionKnown())||(p->remoteVersionMajor() >= 1)) {
+		for(std::list<OutboundMulticast>::iterator tx(gs.txQueue.begin());tx!=gs.txQueue.end();) {
+			tx->sendIfNew(RR,member);
+			if (tx->atLimit())
+				gs.txQueue.erase(tx++);
+			else ++tx;
 		}
-
-		tx->sendIfNew(RR,member);
-		if (tx->atLimit())
-			gs.txQueue.erase(tx++);
-		else ++tx;
 	}
 }